【问题标题】:Sails js ignore id in create/update requestsSails js 在创建/更新请求中忽略 id
【发布时间】:2018-04-12 08:28:23
【问题描述】:

Sails 允许在创建实体时传递 id 属性,

我想忽略用户发送的 id 值,只设置我自己的自动增量

我该怎么做?

【问题讨论】:

  • 你的意思是记录的id吗?用户发送的值是什么意思?如果可能,显示一些代码。
  • @HamzaFatmi 当您使用sails 生成api 时,它具有默认的crud 路由,我注意到您可以将id 发送到create post 方法并且sails 将设置id,这是不好的行为,我希望 id 自动生成
  • 为什么不添加自己的create 路由来覆盖默认路由,以便获得预期的行为?
  • @HamzaFatmi 因为,如果sails 中有一些功能允许我这样做,我想使用它,并且我不想覆盖每个实体的创建函数,这对我来说似乎很愚蠢,这是基本功能,我只是想忽略/保护某些属性,例如我不想启用更新用户的密码

标签: sails.js


【解决方案1】:

您可以在sails lifecycle callbacks 中为每个模型执行此操作。例如,如果你有一个User 模型,你可以在models/User.js 中添加:

module.exports = {
    attributes: {
        // etc
    },

    beforeCreate: function(attribs, cb) {
        // modify the attributes as needed here
        delete attribs.id;
        cb();
    }
}

beforeUpdate 等也有类似的回调。不幸的是,这必须在您想要影响的每个模型中完成。

从每个蓝图create 请求中删除 id 的一种方法是使用策略。 Create a policyreq.body 中剥离id,然后将该策略应用于路由POST /:model(有一个将策略直接应用于路由here 的示例)。如果您这样做,请小心,因为这可能会掩盖您尝试使用的其他 POST 路由。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多