【问题标题】:loopback error - callback was already called环回错误 - 回调已被调用
【发布时间】:2018-07-08 18:50:23
【问题描述】:

我在环回模型上使用观察者将模型数据存储在保存事件之前。但是我遇到了错误,

(node:10760) UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝 id:1):错误:已调用回调

以下是回调的实现

 async function eventSelObserver(ctx, next) {
        console.log("eventSelObserver");
        if ( ! (ctx.isNewInstance) && ctx.currentInstance) {
            ctx.hookState.SelhistoryData = [ctx.currentInstance.toObject()];
        }
        console.log("before calling next");
        return next();
    }

以下是注册回调的方式

 obsModels.observe("before save", eventSelObserver);

这里 eventSelObserver 内部的回调只被调用一次。 任何错误的指针?

【问题讨论】:

    标签: loopbackjs


    【解决方案1】:

    我相信这与您处理异步的方式有关,如果您要使用 async/await 语法,那么您不需要传递next。此外,您需要等待您分配的值。

    async function eventSelObserver(ctx) {
      console.log('eventSelObserver');
      if (!ctx.isNewInstance && ctx.currentInstance) {
        ctx.hookState.SelhistoryData = await ctx.currentInstance.toObject();
      }
      return;
    }
    
    obsModels.observe('before save', await eventSelObserver);
    

    参考:https://loopback.io/doc/en/lb3/Operation-hooks.html#using-asyncawait

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-23
      • 2018-11-06
      • 1970-01-01
      • 2021-10-02
      • 2015-08-13
      • 1970-01-01
      • 2017-10-13
      • 2016-01-26
      相关资源
      最近更新 更多