我有一个数据从前端发送到我的 Controller ,我需要在创建操作发生之前修改数据。我不想编写自定义创建操作,Blueprint API 的创建操作正是我所需要的。我只是想知道进行此类数据修改的正确位置是什么。基本上我需要在将模型保存到数据库之前填充模型的属性。
最佳答案
您可以使用beforeCreate
模型中的生命周期回调,用于在数据库中创建条目之前修改值。
module.exports = {
attributes: {
// your models attributes
},
beforeCreate: function (values, cb) {
// make your changes
return cb();
}
}
您可以编写一个 Controller 操作来执行此操作
// 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
并在其中进行修改。它将类似于上面的 Controller 。但这会影响所有模型的创建操作,因此可能不是您想要的。
关于javascript - sails.js 在创建之前修改模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36206715/