2016-03-24 3 views
1

У меня есть данные, отправленные с внешнего интерфейса на мой контроллер, и мне нужно изменить данные, прежде чем создавать действие. Я не хочу писать настраиваемое действие для создания, действие Create API для Blueprint - это то, что мне нужно. Мне просто интересно, какое место нужно сделать для такого изменения данных. В основном мне нужно заполнить атрибут модели до ее сохранения в базе данных.sails.js изменить модель перед созданием

+0

сделать это у вас передняя часть javascript. – vkstack

ответ

-2

Вы можете попытаться написать код js на своей стороне, чтобы изменить свои данные перед действием create. Удачи вам!

3

Вы можете использовать обратный вызов жизненного цикла beforeCreate в своей модели для изменения значений до создания записи в базе данных.

module.exports = { 
    attributes: { 
     // your models attributes 
    }, 

    beforeCreate: function (values, cb) { 
     // make your changes 
     return cb(); 
    } 
} 

Вы могли бы написать действие контроллера, чтобы сделать это

// api/controllers/ModelController.js 
// controller actions for api/models/Model.js 

module.exports = { 
    create: function (req, res) { 
     var options = request.body; 

     // modify request body 
     Model 
      .create(options) 
      .exec(function (err, obj) { 
       if (err) { return res.serverError(); } 
       return res.json(obj); 
      }); 
    } 
}; 

Или вы могли бы override план создания действия, путем создания файла api/blueprints/create.js и сделать ваши изменения там. Он будет похож на контроллер выше. Но это повлияет на создание действия для всех моделей, поэтому, вероятно, не то, что вы хотите.

+0

Я несколько согласен с этим, но в моем случае я не хочу, чтобы модель знала об этом, я скорее делаю это в контроллере. – ucesco

+0

Но в вашем вопросе вы говорите, что не хотите писать пользовательское действие create o_0 – elssar