【问题标题】:SailsJS: beforeUpdate (Lifecycle callback), access current valuesSailsJS:beforeUpdate(生命周期回调),访问当前值
【发布时间】:2015-05-22 18:25:36
【问题描述】:

很清楚如何访问新值,第一个参数包含它们

beforeUpdate: function (values, cb) {....}

但是我怎样才能访问要替换的当前值呢?

【问题讨论】:

    标签: javascript node.js sails.js waterline


    【解决方案1】:

    为了访问当前值,您必须进行调用并获取当前记录。

    models/user.js
    beforeCreate: function (values, cb) {
        User.findOne(this.update.arguments[0].id || this.update.arguments[0]).exec(err, function(originalUser){/*...*/})
    }
    

    还可以查看https://github.com/balderdashy/waterline/issues/1004#issuecomment-102432862,这里正在讨论这个问题。应该提供有关获取 ID 和当前解决方案的见解。

    上述解决方案已更新以反映 cmets。

    【讨论】:

    • 问题是,如果我尝试使用 URL 更新,values 不包含 id 属性,因为它不是更新的一部分,例如运行此 URL:@ 987654325@,values中将不存在id
    • 太棒了,所以正如您链接的 github 问题讨论中所建议的那样,id 可以使用this.update.arguments[0] 检索。谢谢!
    • 正确。请注意,如果您进行更新,通过对象(ex Model.update({id:X}) 将 id 直接传递到模型中,那么它将中断,因为那将是this.update.arguments[0].id。轻松计划。你可以简单地做var id = this.update.arguments[0].id || this.update.arguments[0]
    • 有人遇到过 this.update.arguments 突然开始返回 null 的问题吗?可能是其中一个包的重大变化......
    • this.update.arguments 在sails 0.12.11 中没有定义,所以它不起作用。它可能与异步模块有关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-28
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-04
    相关资源
    最近更新 更多