【问题标题】:Disable recursive hook calling in Loopback 3在 Loopback 3 中禁用递归挂钩调用
【发布时间】:2020-07-29 04:08:36
【问题描述】:

我想实现计算属性。例如,我有ShopBook 模型,Shop 有很多Books。我想为Shop 创建属性booksCost,它等于书籍价格的总和(但我不想包括所有要查询的书籍)

我的第一个想法是创建一个操作钩子

Shop.observe('loaded', async function(ctx) {
    const shopInstanse = ctx.data;
    const books = await Shop.findById(shopInstanse.id).toJSON().books;
    shopInstanse.booksCost = books.reduce((s, book) => s + book.price, 0);
});

我喜欢这种方式,但是当我调用findById 时,我的钩子会被递归调用。如何解决?

【问题讨论】:

    标签: loopbackjs loopback


    【解决方案1】:

    我使用上下文选项解决了这个问题

    Shop.observe('loaded', async function(ctx) {
        if (ctx.options && ctx.options.skipNextHook) return;
        const shopInstanse = ctx.data;
        const books = (await Shop.findById(shopInstanse.id, {skipNextHook: true}))
            .toJSON().books;
        shopInstanse.booksCost = books.reduce((s, book) => s + book.price, 0);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-06
      • 1970-01-01
      • 2021-12-07
      • 2018-06-16
      相关资源
      最近更新 更多