如何使用MEAN和sails.js启动一个新项目

Jes*_*ess 14 mongodb node.js angularjs sails.js waterline

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

现在,我已经编写了REST API,我听说sails.js听起来非常引人注目.它可以自动为您创建REST 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,但我很高兴知道哪些步骤对其他人有效.

非常感谢你!

The*_*One 14

你是用正确的道路上npm install -g sailssails new myproj.由于您要使用mongo,您需要为mongo安装水线适配器(在项目目录中)npm install sails-mongo --save并配置风帆以使用mongo.

将mongo配置添加到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)
    }
  }
};
Run Code Online (Sandbox Code Playgroud)

此外,以创建API,(项目目录)的使用sails generate NAME,其中NAME是模型的名称.默认情况下,任何内容都可以添加到数据库中,因此您可能希望限制属性/字段,甚至可能验证它们.这很简单.generate命令为您创建了一些文件,其中一个是models/NAME.js.在此文件中,您只需导出一个对象,该对象具有与所需字段对应的属性以及在保存之前要进行的任何限制/验证.

// 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;
Run Code Online (Sandbox Code Playgroud)

此页面列出了您可以拥有的所有不同类型和验证.

完成所有设置后,运行sails lift以启动服务器.默认端口是1337,但您可以使用PORT env var或本地配置更改它

module.exports = {
    port: 80
    // ... more config things
}
Run Code Online (Sandbox Code Playgroud)

此外,对于MEAN中的'A',请查看Angular Sails.它是一个小角度服务,让你轻松利用socket.io的东西,帆为你做的事情.您可以通过套接字连接调用所有API,使它们更轻,更快.

在这种情况下$sails替换$http

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

    $sails.get("/bars", function (data) {
      $scope.bars = data;
    });
});
Run Code Online (Sandbox Code Playgroud)