摘要:業務邏輯處理層,采用的的語法編寫。配置層這層里面有和兩層,然后和一些。所以遇到這個情況就檢查是不是鏈接配的有問題或者的服務已關閉。在瀏覽器輸入查出來的結果如圖所示這條數據手動添加的,這樣一個很簡單的算完成了。官網官網阮一峰模塊
項目構建
安裝Node就不多說了,
1.sails安裝與項目新建運行npm install sails -g//全局安裝 sails new project-name//新建項目 cd project-name //進入剛才新建項目的目錄 sails lift //運行項目,運行原理也是直接在項目目錄路徑下使用node app.js npm install sails-mysql --save //--save 把安裝的模塊寫進package.json
到了這一步,環境算是搭建完成。
2.目錄結構介紹 2.1api在api目錄下,有著controller、hooks、models、policies、responses和services幾個目錄
controller目錄下存放的就是頁面與后臺服務器通訊的接口,如果對應的java,那么就是java里面的Action層或者使用Spring
MVC ,那么也是對應的Controller,里面存放的就是接口。
models,數據模型層,也就是實體層,對應java里面的entity。
policies(策略),在controller之前執行,主要工作是session認證,如果session是認證通過了,那么就可以進入下一個策略或者如果是最后一個策略,那么就可以進入controller了,個人感覺像是java里的過濾器或者分發器。
responses,自定義的響應。舉個例子,一般從前臺發出一個請求后,如果經過了服務器,那么都會給客戶端返回一個結果,除了本身自帶的響應方式,也可以采用自定義的響應,比如返回一個404頁面,返回500頁面或者返回字符串等等。
services,業務邏輯處理層,采用es6的Module的語法編寫。
2.2assets靜態資源層在這層目錄里面有,js,image,styles,templates,這個目錄里面主要放的就是靜態資源,沒什么說的。
2.3config配置層這層里面有env和locales兩層,然后和一些js。
env中有一個development.js里面的注釋是如下:
開發環境配置,這個文件夾里面包含了開發團隊共享的一些配置,比如api的名稱,數據庫的密碼,如果你在你的Sails應用中使用了版本控制器,這個文件也會提交到你的資源倉庫里面,除非你在gitignore中添加了一個信息,表明這個文件是私有的或不公開的。
env中的production.js里的注釋如下:
項目環境配置,與development類似,但是從注釋中看到要多一些東西,比如配置端口的和日志的
這層里面主要放置的是grunt的任務,
2.5views層這一層主要放置的是作為展示的前臺頁面,一種情況是使用node做單純的后臺服務器,不處理前臺業務,而另外一種情況是采用模塊化的思想,對結構進行分層,達到MVC的合理實現,本來Sails就是一個MVC框架所以第一種情況還是不太會出現。
3開始搭建項目整體流程:新建數據庫 -> 新建表 -> 建實體 -> 在sails中搭建環境 -> 編碼 -> 得到結果
3.1新建數據庫和表建好mysql數據庫,然后新建表,新建表有兩種新建方式,一種是自動建表,另外一種是手動建表。手動建表我就不多說了。
3.2鏈接數據庫設計的主要文件是config里面的connections.js,里面存放的是鏈接數據庫的配置,這里的配置不光只能配置這么一個鏈接,可以多個不同或相同數據庫,代碼如下:
mySqlServer: { adapter: "sails-mysql", host: "localhost", port: 3306, user: "root", password: "root", database: "myproject", charset:"utf8" }
然后下一個重要文件就是models.js里面的文件,里面存放的是數據庫使用的那個鏈接,以上面的名字作為鍵值,代碼如下:
connection: "mySqlServer", migrate: "alter"
connection :表示我是用的就是mySqlServer這個鏈接
migrate:alter修改,這意味這對這個數據在運行項目時時會根據你實體的設計修改數據中的表結構的。而safe就是要手動建表,那么這個時候你得把實體與數據庫對應起來之不過有點麻煩,對于初學者來說還是把實體與數據庫手動對應起來嗎,因為之后還會有復雜的表間關系,比如說一對一、一對多、多對多等。
回到api層理的models里面,在里面新建好js文件,值得注意的是文件名稱,這個名稱直接關系到你之后的查詢,刪除等操作,我新建的operator的代碼如下:
module.exports = { attributes:{ username:{ type:"string", required:true }, password:{ type:"string", required:true } } }
除了這兩個字段,sails會自動給你在表里面新建三個字段,id,createdAt,updatedAt,新建好數據的表結構如下圖所示:
執行代碼在項目路徑下進入CMD命令窗口
node app.js或者sails lift,執行完之后如果沒有報錯且新建好數據庫那么就沒什么問題了。
那么在這個階段容易碰到的問題有那些呢:
Consistency violation: A model (`operator`) references a datastore which cannot be found (`otherSql`).
這句話的意思是,operator這個數據模型在otherSql這個鏈接中找不到。所以遇到這個情況就檢查是不是鏈接配的有問題或者Mysql的服務已關閉。
controller配置里面的是交互的接口,代碼如下:
module.exports = { findOne:function (req,res) { var id = req.param("id"); if(id){ console.log(id); operator.find(id, function operatorFound(err, entity) { res.send(entity,200); }); }else{ console.log("是啊比"); res.send("失敗",500); } } };
一個簡單的查詢就這么完成了,寫完成之后就是驗證編寫的正確性了。在瀏覽器輸入url:
http://localhost:1337/user/findOne?id=1
查出來的結果如圖所示:
這條數據手動添加的,這樣一個很簡單的demo算完成了。
如果想要修改項目訪問端口,可在local.js里面添加:port:端口號,項目訪問默認路徑是user,想要修改的話,可以在route里面修改進行訪問。
代碼如下:
"/findOne":{ controller:"UserController", action:"findOne" }
起哄controller對應的就是controller的文件名(不添加后綴),action:對應的就是里面的方法名。
sails官網
grunt官網
es6-阮一峰-模塊
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/84982.html
摘要:原文鏈接為什么使用前言入手半年,從用開發自己的博客到用開發公司項目,深深被震撼了。我不知道官方是否解釋過為什么要用個單詞,但以我的理解,的是負責指揮每一條客戶端請求應該分配到服務器端的哪個去,所以叫藍圖吧。 原文鏈接:BlueSun | 為什么使用Sails? 前言 入手Node.js半年,從用Express開發自己的博客到用Sails開發公司項目,深深被Sails震撼了。Sails是...
摘要:是下的一個優秀的框架,但是使用后,在流量增長時,進程有時突然內存暴漲保持高占用。如果是內存泄露引起的,則需要細心檢查代碼,確定變量能正常回收。每個對象有自己產生的內存。譯注但是大對象內存區本身不是可執行的內存區。 Sails.js 是 node 下的一個優秀的 MVC 框架,但是使用 Sails 后,在流量增長時, node 進程有時突然內存暴漲、保持高占用。經過翻閱源碼后,發現這個問...
摘要:它基于格式,在絕大多數情況下,使用協議傳輸請求。由它加密的文件可在所有支持的操作系統和處理器上進行轉移。后話本文的描述及用語,僅基于本人目前的水平而寫,難免有所局限和措辭不當之處。 原文鏈接:BlueSun | My Toolkit of Node.js Cheerio Fast, flexible, and lean implementation of core jQuery des...
摘要:是一個基于和的服務器端和瀏覽器端的的前后端全棧應用框架。是的組件,并且會進行數據初始化不但可以支持的數據初始化,還可以合并和的,使用同一個,和的無縫結合。 koa-cola是一個基于koa和react的服務器端SSR(server side render)和瀏覽器端的SPA(single page application)的web前后端全棧應用框架。 koa-cola使用typescr...
摘要:中文資料導航官網七牛鏡像深入淺出系列進階必讀中文文檔被誤解的編寫實戰系列熱門模塊排行榜,方便找出你想要的模塊多線程,真正的非阻塞淺析的類利用編寫異步多線程的實例中與的區別管道拒絕服務漏洞高級編程業界新聞看如何評價他們的首次嘗鮮程序員如何說服 node.js中文資料導航 Node.js HomePage Node官網七牛鏡像 Infoq深入淺出Node.js系列(進階必讀) Nod...
閱讀 2813·2023-04-25 15:01
閱讀 3012·2021-11-23 10:07
閱讀 3358·2021-10-12 10:12
閱讀 3444·2021-08-30 09:45
閱讀 2184·2021-08-20 09:36
閱讀 3566·2019-08-30 12:59
閱讀 2424·2019-08-26 13:52
閱讀 927·2019-08-26 13:24