环回错误-回调已被调用

时间:2018-07-08 18:50:23

标签: loopbackjs

我正在使用观察者对环回模型进行保存之前将模型数据存储在其中。但是我遇到了错误,

(节点: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内部的回调仅被调用一次。 错误的任何指针?

1 个答案:

答案 0 :(得分:0)

我认为这与您处理异步性的方式有关,如果要使用异步/等待语法,则不需要传递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