成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Sails+MVC+Mysql+Node+學(xué)習(xí)筆記一

W4n9Hu1 / 1651人閱讀

摘要:業(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類似,但是從注釋中看到要多一些東西,比如配置端口的和日志的

2.4task任務(wù)層

這層里面主要放置的是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)系,比如說一對一、一對多、多對多等。

3.3建立數(shù)據(jù)模型

回到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)如下圖所示:

3.4測試數(shù)據(jù)鏈接

執(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)閉。

3.5controller的配置

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算完成了。

4補(bǔ)充

如果想要修改項(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

相關(guān)文章

  • 為什么使用Sails?

    摘要:原文鏈接為什么使用前言入手半年,從用開發(fā)自己的博客到用開發(fā)公司項(xiàng)目,深深被震撼了。我不知道官方是否解釋過為什么要用個單詞,但以我的理解,的是負(fù)責(zé)指揮每一條客戶端請求應(yīng)該分配到服務(wù)器端的哪個去,所以叫藍(lán)圖吧。 原文鏈接:BlueSun | 為什么使用Sails? 前言 入手Node.js半年,從用Express開發(fā)自己的博客到用Sails開發(fā)公司項(xiàng)目,深深被Sails震撼了。Sails是...

    xi4oh4o 評論0 收藏0
  • Sails.js 內(nèi)存暴漲 & 源碼分析

    摘要:是下的一個優(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)這個問...

    antz 評論0 收藏0
  • My Toolkit of Node.js

    摘要:它基于格式,在絕大多數(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...

    leeon 評論0 收藏0
  • koa-cola:只需個react組件,同時支持單頁應(yīng)用(SPA)和服務(wù)器渲染(SSR)

    摘要:是一個基于和的服務(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...

    XGBCCC 評論0 收藏0
  • node.js中文資料導(dǎo)航

    摘要:中文資料導(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...

    geekidentity 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<