项目搭建安装Node就不多说了,1.sails安装与项目创建运行npminstallsails-g//globallyinstallsailsnewproject-name//newprojectcdproject-name//进入新建项目sailslift的目录//运行项目,运行原理是使用nodeapp.jsnpminstallsails-mysql--save//--save将安装的模块直接写入项目目录路径至此package.json中,环境就认为是完整的了。2.目录结构介绍2.1api在api目录下,有controller、hooks、models、policies、responses和services几个目录。controller目录存放页面与后台服务器通信的接口。如果对应的是java,那么就是在java的Action层或者使用SpringMVC,那么也是对应的Controller,里面存放的是接口。models,数据模型层,即实体层,对应java中的实体。policies(策略),在controller之前执行,主要工作是session认证,如果session认证通过,那么就可以进入下一个policy,如果是最后一个policy,那么就可以进入controller,个人感觉在java中过滤器或分配器。响应,自定义响应。比如前台发送一个请求后,如果经过服务器端,就会返回一个结果给客户端。除了自己的响应方式外,也可以使用自定义的响应,比如返回404页面,返回500页面或者返回字符串等服务,业务逻辑处理层,用es6的Module语法来写。2.2assets静态资源层该层目录下有js、image、styles、templates。这个目录主要是静态资源,没什么好说的。2.3config配置层这一层有env和locales两层,然后是一些js。env中的development.js中有注释如下:开发环境配置,这个文件夹包含一些开发团队共享的配置,比如api的名称,数据库的密码,如果你用的是你Sails中的版本applicationController,这个文件也会被提交到你的资源仓库,除非你在gitignore中添加一条信息表明这个文件是私有的或者不公开的。env中production.js中的注释如下:项目环境配置和开发类似,但是从注释中可以看到更多的东西,比如2.4task任务层配置端口和日志。该层主要放置gruntTask,2.5views层该层主要放置作为前台页面进行展示。在一种情况下,node作为一个简单的后台服务器,不处理前台业务。还有一种情况,就是用模块化的思想修改结构分层,实现MVC的合理实现,本来Sails就是一个MVC框架,所以第一种情况还是不太可能出现。3开始搭建项目整体流程:新建数据库->新建表->创建实体->在sails中搭建环境->代码->得到结果3.1新建数据库和表Createamysql数据库,然后新建一张表。创建表有两种方式,一种是自动创建表,另一种是手动创建表。手动建表就不多说了。3.2链接数据库设计的主文件是config中的connections.js,存放链接数据库的配置。这里的配置不仅可以配置这样一个链接,还可以配置多个不同或者相同的数据库。代码如下:mySqlServer:{adapter:'sails-mysql',host:'localhost',port:3306,user:'root',password:'root',database:'myproject',charset:'utf8'然后下一个重要的文件是models.js,里面的文件包含了数据库使用的链接,以上面的name为键值,代码如下:connection:'mySqlServer',migrate:'alter'connection:It意思是我在用mySqlServermigrate:alterModify的链接,也就是说这个数据在运行项目的时候会根据你实体的设计修改数据里面的表结构。而安全的是手动建表,所以这时候就得把实体和数据库关联起来,但是有点麻烦。初学者是不是应该手动把实体和数据库关联起来,因为后面表之间会有复杂的关系,比如一对一,一对多,多对多等等。3.3建立数据model回到api分层的models,在里面新建一个js文件。值得注意的是,文件名直接关系到你后续的查询、删除等操作。我新建的operator的代码如下:module.exports={attributes:{username:{type:'string',required:true},password:{type:'string',required:true}}}另外对于这两个字段,sails会自动给你在表中新建三个字段,id,createdAt,updatedAt,新建数据的表结构如下图所示:3.4测试数据链接执行代码输入CMD命令项目路径下的windownodeapp.js或者sailslift,如果执行后没有报错,并且新建数据库,就没有问题。那么现阶段容易遇到的问题有哪些:一致性违规:一个模型(`operator`)引用了一个无法找到的数据存储(`otherSql`)。这句话的意思是operator的数据模型在otherSqlLinknotfound。所以如果遇到这种情况,检查一下是不是链接配置有问题,或者是Mysql服务被关闭了。3.5控制器配置控制器配置是一个交互界面,代码如下:module.exports={findOne:function(req,res){varid=req.param('id');如果(id){console.log(id);operator.find(id,functionoperatorFound(err,entity){res.send(entity,200);});}else{console.log("比");res.send("发送失败",500);}}};一个简单的查询就这样完成了,写完之后,就到了验证写的正确性的时候了。在浏览器中输入url:http://localhost:1337/user/findOne?id=1结果如图:这个数据是手动添加的,这样一个很简单的demo就完成了。4补充如果要修改项目访问端口,可以在local.js中添加:port:端口号,项目访问默认路径为user,如果要修改,可以在访问的路由中修改.代码如下:'/findOne':{controller:'UserController',action:'findOne'}booingcontroller对应控制器的文件名(不加后缀),action:对应方法名里面。sails官网grunt官网es6-ruanyifeng-module
