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