如何用MEAN和sails.js开始一个新的项目

我在过去创build了一个带有node.js,express和angular.js的web应用程序。 我正在开始一个新的项目,我也想使用MongoDB。 那将是MEAN堆栈。 只需使用MEAN就可以开始一个项目: http : //mean.io/ 。

现在,我已经编写了REST API,我听说过sails.js,这听起来非常有吸引力。 它可以为你自动创buildREST API。

所以我的问题是, 我会采取什么步骤来启动一个新的项目与MEAN堆栈和sails.js

选项:

  1. 我会克隆mean.io堆栈,运行npm install,然后npm install sails.js?
  2. 或者,sails.js似乎有自己的想法来做一个目录结构。 那么我会按照他们的说明安装sails.js http://sailsjs.org/#!getStarted然后npm安装Angular和Mongo? (我想我不会需要mongoose,因为sails.js有它自己的ORM,水线)。

我今天实际上会尝试选项2,但是我会很高兴知道哪些步骤对他人有效。

非常感谢你!

您正在使用npm install -g sails sails new myprojsails new myproj 。 因为你想使用mongo,你需要安装mongo的水线适配器 (在项目目录中) npm install sails-mongo --save并configurationsails以使用mongo。

将mongoconfiguration添加到config / adapters.js文件中:

 module.exports.adapters = { 'default': 'mongo', mongo: { module : 'sails-mongo', host : 'localhost', port : 27017, user : 'username', password : 'password', database : 'your mongo db name here', // OR module : 'sails-mongo', url : 'mongodb://USER:PASSWORD@HOST:PORT/DB', // Replica Set (optional) replSet: { servers: [ { host: 'secondary1.localhost', port: 27017 // Will override port from default config (optional) }, { host: 'secondary2.localhost', port: 27017 } ], options: {} // See http://mongodb.github.io/node-mongodb-native/api-generated/replset.html (optional) } } }; 

此外,要创build您的API,(在项目目录中)使用sails generate NAME其中NAME是模型的名称。 默认情况下,任何东西都可以添加到数据库中,所以你可能想要限制属性/字段,甚至可能validation它们。 这很容易。 generate命令为你创build了几个文件,其中一个是models/NAME.js 在这个文件中,您可以简单地导出一个对象,其中包含与您想要的字段相对应的属性以及在保存之前想要发生的任何限制/validation。

 // Person.js var Person = { attributes: { firstName: 'STRING', lastName: 'STRING', age: { type: 'INTEGER', max: 150, required: true } birthDate: 'DATE', phoneNumber: { type: 'STRING', defaultsTo: '111-222-3333' } emailAddress: { type: 'email', // Email type will get validated by the ORM required: true } } }; module.exports = Person; 

此页面列出了您可以拥有的所有不同types和validation。

一旦你完成所有的设置,运行sails lift ,启动你的服务器。 默认的端口是1337,但是你可以用PORT env var或者你的本地configuration来改变它

 module.exports = { port: 80 // ... more config things } 

另外,就“中意”中的“A”而言,请查看Angular Sails 。 它是一个小angular度服务,让您轻松利用socket.io风帆正在为您做的事情。 您可以通过套接字连接调用所有的API,使它们更轻更快。

在这种情况下, $sails取代$http

 app.controller("FooController", function ($scope, $sails) { $scope.bars = []; $sails.get("/bars", function (data) { $scope.bars = data; }); }); 

这里有一个很棒的样板项目,它使用react.js而不是angular: https : //github.com/lynnaloo/yacht-rock 。