【问题标题】:sails.js modify model before createSails.js 在创建之前修改模型
【发布时间】:2016-03-24 17:46:06
【问题描述】:

我有一个数据从前端发送到我的控制器,我需要在创建操作发生之前修改数据。我不想编写自定义创建操作,蓝图 API 的创建操作正是我所需要的。我只是想知道进行此类数据修改的正确位置是什么。基本上我需要先填充模型的属性,然后再将其保存到数据库中。

【问题讨论】:

  • 在你的前端 javascript 上做。

标签: javascript database sails.js


【解决方案1】:

您可以在模型中使用 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 并在那里进行修改。它将类似于上面的控制器。但这会影响所有模型的创建操作,因此可能不是您想要的。

【讨论】:

  • 我有点同意这一点,但就我而言,我不想让模型意识到这一点,我宁愿在控制器中这样做。
  • 但在您的问题中您说您不想编写自定义创建操作 o_0
【解决方案2】:

您可以尝试在客户端编写一些 js 代码,以便在创建操作之前修改您的数据。 祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-10
    • 2017-08-30
    相关资源
    最近更新 更多