【问题标题】:Loopback update model after save保存后环回更新模型
【发布时间】:2016-04-03 17:16:02
【问题描述】:

我想在“保存后”挂钩中更新最后插入/更新的文档(行),而不像这样创建新的实例:

Model.observe('after save', function (ctx, next) {
    ctx.someProperty = 'Foo';
    ctx.update();
});

怎么可能?

【问题讨论】:

    标签: node.js loopbackjs strongloop


    【解决方案1】:

    我不确定您所说的“更新”模型是什么意思。据我所知,通用模型类上没有update() 函数。如果您正在寻找 updateAttribute,那么有关该功能的文档是 here

    但是,假设您的问题只是“如何在环回挂钩中访问观察到的模型?”那么答案是实例存储在ctx.instance,而不是作为ctx 变量本身返回。请参阅示例here

    例如

    Model.observe('after save', function (ctx, next) {
        ctx.instance.updateAttributes({someProperty: 'Foo'})
    });
    

    如果您可以更详细地描述您尝试使用update() 函数实现的功能,我将尝试解决这个问题。 还请注意,上面的代码可能会导致无限循环 - 因为 updateAttribute 调用本身会触发“保存后”挂钩 - 这是我不太确定您的真实身份的另一个原因问。

    【讨论】:

    • 我编辑我的问题。是的,您对我的问题的假设是正确的,您对无限循环的暗示也是正确的。有什么方法可以防止调用“保存后”触发器来解决无限循环问题?
    • @viam 好吧,这可能是一个设计问题。为什么要特别更新模型?您可以在保存之前更新您要更新的属性,而不是在事后进行更新吗?
    • 我的目的是更新一个文档行,用你的答案实现它。无限循环是另一个问题。 Tnx
    • @viam 我认为你会从重新思考你的代码组织中受益。为什么你必须在保存前的钩子上更新模型?是否可以在不会导致循环的其他地方进行更新?
    • 假设我需要将 TableA.id 保存到 TableB.AID 中,然后根据 TableB.id 中最后插入的 id 更新 TableA.BID。换句话说,每两个表都具有“belongsTo”的关系(TableB.AID 属于 TableA,TableA.BID 属于 tableB。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    • 2012-11-11
    • 1970-01-01
    相关资源
    最近更新 更多