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

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

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

Итак, мой вопрос: какие шаги я должен предпринять, чтобы начать новый проект со стеком MEAN И Sailes.js?

Опции:

  1. Буду ли я клонировать стек mean.io, запускать установку npm, а затем также npm устанавливать паруса.js?
  2. Или кажется, что у Sais.js есть собственное представление о том, что делать со структурой каталогов. Так что я бы установил паруса.js в соответствии с их инструкциями http://sailsjs.org/#!getStarted и затем npm установить Angular и Mongo? (Думаю, Mongoose мне бы не понадобился, т.к. у Sais.js есть своя ORM, ватерлиния).

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

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


person Jess    schedule 31.01.2014    source источник
comment
Я выполнил поиск в Google и не нашел многого, поэтому решил, что нам нужно начать обсуждение здесь.   -  person Jess    schedule 31.01.2014
comment
Пока я только что сделал npm install -g sails и sails new myproj.   -  person Jess    schedule 31.01.2014


Ответы (2)


Вы на правильном пути с npm install -g sails и sails new myproj. Поскольку вы хотите использовать монго, вам нужно будет установить адаптер ватерлинии для монго (в каталоге проекта) npm install sails-mongo --save и настроить паруса использовать монго.

Добавьте конфигурацию 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)
    }
  }
};

Кроме того, для создания 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 или в своих локальных конфигурациях.

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

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

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

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

    $sails.get("/bars", function (data) {
      $scope.bars = data;
    });
});
person TheSharpieOne    schedule 02.02.2014
comment
Это круто! Спасибо. Я буду следить за этим в ближайшие несколько дней. - person Jess; 03.02.2014
comment
Однако адаптер парусов монго на момент написания статьи имеет проблемы с ассоциациями, и много раз требуется доступ к собственному соединению для запроса поддокументов. Возможно, вы захотите проверить проблемы парусов монго, чтобы увидеть, как он сравнивается с мангустом. ИМО ничего победить мангуста, но я все равно пошел вперед - person ajeeshpu; 14.02.2014

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

person Travis Webb    schedule 15.03.2015