Как добавить новое поле в Sails.js/Waterline при создании?

Модель «Моя школа» имеет имя, адрес и т. д., а также владельца, который является объектом «Пользователь».

School.js

module.exports = {
  attributes: {
    name: {
        type: 'string',
        required: true
    },
    address: {
        type: 'string'
    },
    owner: {
      model: 'user'
    },
    ...

При создании новой школы я делаю следующее:

create: function(req, res, next) {
    School.create(req.params.all(), function schoolCreated (err, school) {

но как проще всего добавить владельца (который после входа в сессию находится по адресу req.session.user)?

Я понимаю, что я могу сделать

create: function(req, res, next) {
    School.create({'name': req.params.name, 'address': req.params.address, 'owner': req.session.user}, function schoolCreated (err, school) {...

но должен быть более простой способ. Любые примеры очень помогут! Большое спасибо!


person Chris F.    schedule 04.12.2014    source источник


Ответы (1)


Я сам отвечу на вопрос.

Похоже, элегантное решение, которое работает для меня, состоит в том, чтобы использовать библиотеку Lo-Dash для объединения параметров запроса с пользователем. как это:

var school = _.merge(req.params.all(), {'owner': req.session.user});

и передайте только что созданную школьную переменную методу create.

School.create(school, function schoolCreated (err, school) {...
person Chris F.    schedule 05.12.2014