Как начать новый проект с помощью MEAN и sails.js

Я создал веб-приложение с node.js, express и angular.js в прошлом. Я начинаю новый проект, и я хочу также использовать MongoDB. Это будет стек MEAN. Используя только MEAN, я мог бы запустить проект с этим: http://mean.io/.

Теперь я написал REST API в прошлом, и я слышал о sails.js, который звучит очень убедительно. Он может автоматически создавать API REST для вас.

Итак, мой вопрос: , какие шаги я последую для запуска нового проекта со стеком MEAN и sails.js?

Параметры:

  • Если бы я клонировал стек mean.io, запустил установку npm, а затем npm установил sails.js?
  • Или, похоже, у sails.js есть своя идея о том, что делать для структуры каталогов. Поэтому я бы установил sails.js в соответствии с их инструкциями http://sailsjs.org/#!getStarted, а затем npm install Angular и Mongo? (Я думаю, мне не понадобится Mongoose, так как sails.js имеет свой собственный ORM, ватерлиния).

Сегодня я собираюсь попробовать вариант 2, но я был бы очень рад узнать, какие шаги сработали для других.

Большое спасибо!

Ответы

Ответ 1

Вы находитесь на правильном пути с помощью npm install -g sails и sails new myproj. Поскольку вы хотите использовать mongo, вам нужно будет установить ватерлинговый адаптер для mongo (в проекте dir) 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:[email protected]: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)
    }
  }
};

Кроме того, для создания вашего 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;

На этой странице перечислены все типы и валидации, которые вы можете иметь.

Как только вы настроитесь, запустите sails lift, чтобы запустить сервер. Порт по умолчанию - 1337, но вы можете изменить его с помощью PORT env var или в локальных конфигурациях

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

Кроме того, что касается "A" в MEAN, ознакомьтесь с Angular Sails. Это небольшая услуга angular, которая позволит вам легко воспользоваться преимуществами сокетов .io, которые делают паруса для вас. Вы можете вызывать все ваши API через соединение сокета, чтобы сделать их еще легче и быстрее.

В этом случае $sails заменяет $http

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

    $sails.get("/bars", function (data) {
      $scope.bars = data;
    });
});

Ответ 2

Здесь есть потрясающий шаблонный проект, в котором вместо angular используется response.js: https://github.com/lynnaloo/yacht-rock.