javascript - sails.js 在创建之前修改模型

标签 javascript database sails.js

我有一个数据从前端发送到我的 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/

相关文章:

node.js - Swig 模板引擎和 Sails.js - 如何更改 tagControls

postgresql - Heroku 上的 sailsjs 未在 postgresql 中创建模型

javascript - 使用 Vue.JS/Axios 和来自第三方 API(基于 Django!)的数据填充 DOM

javascript - $location.Path 不在 iphone 上运行

MySQL 棘手的正则表达式

database - 树结构数据的图数据库或关系数据库

sails.js - 如何为 ejs 中的每个模板设置不同的 <title> 值?

javascript - 如何获取导致 JavaScript 中抛出 ReferenceError 的变量?

javascript - 检测用户代理 Firefox

mysql - 对内连接行进行分组的查询