Node.js 为什么loopback给我一个空的ctx.options操作挂钩?
此问题也已提交给github: 在我们的应用程序中,我们定义了一个“保存前”操作挂钩。 使用它,我们打算对请求用户进行一些验证 为了访问请求用户的id,我们试图从上下文参数的optionsobject获取他的accessToken。这是根据官方的环回文件完成的( ) 以下代码已减少到调试所需的最少内容:Node.js 为什么loopback给我一个空的ctx.options操作挂钩?,node.js,express,loopback,Node.js,Express,Loopback,此问题也已提交给github: 在我们的应用程序中,我们定义了一个“保存前”操作挂钩。 使用它,我们打算对请求用户进行一些验证 为了访问请求用户的id,我们试图从上下文参数的optionsobject获取他的accessToken。这是根据官方的环回文件完成的( ) 以下代码已减少到调试所需的最少内容: Progress.observe('before save', function verifyAccessToken(ctx, next) { console.log('Exec
Progress.observe('before save', function verifyAccessToken(ctx, next) {
console.log('Executing before save');
if (!ctx) {
next(new Error('No ctx was passed to verifyMyUserExists'));
}
else if (!ctx.options) {
console.log('Ctx is:');
next(new Error('No options in ctx was passed to verifyMyUserExists'));
}
else if (!ctx.options.accessToken) {
console.log('Options is:');
console.log(ctx.options);
next(new Error('No accessToken options in ctx was passed to verifyMyUserExists'));
}
else {
next();
}
});
从本周起,在代码中没有任何更改的情况下,此验证不再有效。
基于此,我知道ctx.options是{}的空对象(请参阅下面的完整错误日志)。
因此,我们无法访问accessToken,当然
我们进行了一些故障排除,但无法找到根本原因,即ctx.options为空的原因
Executing before save
Options is:
{}
Nicht verarbeiteter Fehler für Anforderung POST /api/progresses/?access_token=<XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX>: Error: No accessToken options in ctx was passed to verifyMyUserExists
at verifyAccessToken (C:\Users\erosinger3\workspace_FitChallenger\Backend\common\models\progress.js:34:18)
at notifySingleObserver (C:\Users\erosinger3\workspace_FitChallenger\Backend\node_modules\loopback-datasource-juggler\lib\observer.js:160:22)
at C:\Users\erosinger3\workspace_FitChallenger\Backend\node_modules\async\dist\async.js:3096:16
at replenish (C:\Users\erosinger3\workspace_FitChallenger\Backend\node_modules\async\dist\async.js:998:17)
at C:\Users\erosinger3\workspace_FitChallenger\Backend\node_modules\async\dist\async.js:1002:9
at eachLimit$1 (C:\Users\erosinger3\workspace_FitChallenger\Backend\node_modules\async\dist\async.js:3182:24)
at Object.<anonymous> (C:\Users\erosinger3\workspace_FitChallenger\Backend\node_modules\async\dist\async.js:1032:16)
at doNotify (C:\Users\erosinger3\workspace_FitChallenger\Backend\node_modules\loopback-datasource-juggler\lib\observer.js:157:11)
at doNotify (C:\Users\erosinger3\workspace_FitChallenger\Backend\node_modules\loopback-datasource-juggler\lib\observer.js:155:49)
at doNotify (C:\Users\erosinger3\workspace_FitChallenger\Backend\node_modules\loopback-datasource-juggler\lib\observer.js:155:49)
at doNotify (C:\Users\erosinger3\workspace_FitChallenger\Backend\node_modules\loopback-datasource-juggler\lib\observer.js:155:49)
at Function.ObserverMixin._notifyBaseObservers (C:\Users\erosinger3\workspace_FitChallenger\Backend\node_modules\loopback-datasource-juggler\lib\observer.js:178:5)
at Function.ObserverMixin.notifyObserversOf (C:\Users\erosinger3\workspace_FitChallenger\Backend\node_modules\loopback-datasource-juggler\lib\observer.js:153:8)
at Function.ObserverMixin._notifyBaseObservers (C:\Users\erosinger3\workspace_FitChallenger\Backend\node_modules\loopback-datasource-juggler\lib\observer.js:176:15)
at Function.ObserverMixin.notifyObserversOf (C:\Users\erosinger3\workspace_FitChallenger\Backend\node_modules\loopback-datasource-juggler\lib\observer.js:153:8)
at Function.ObserverMixin._notifyBaseObservers (C:\Users\erosinger3\workspace_FitChallenger\Backend\node_modules\loopback-datasource-juggler\lib\observer.js:176:15)
保存前执行
选择是:
{}
Nicht verarbeiter Fehler für Anforderung POST/api/progress/?access\u token=:错误:未将ctx中的accessToken选项传递给verifyMyUserExists
在verifyAccessToken(C:\Users\erosinger3\workspace\u FitChallenger\Backend\common\models\progress.js:34:18)
在notifySingleObserver(C:\Users\erosinger3\workspace\u FitChallenger\Backend\node\u modules\loopback datasource juggler\lib\observer.js:160:22)
在C:\Users\erosinger3\workspace\u fitchallinger\Backend\node\u modules\async\dist\async.js:3096:16
补充时(C:\Users\erosinger3\workspace\u fitchallinger\Backend\node\u modules\async\dist\async.js:998:17)
在C:\Users\erosinger3\workspace\u fitchallinger\Backend\node\u modules\async\dist\async.js:1002:9
每个限制$1(C:\Users\erosinger3\workspace\u fitchallinger\Backend\node\u modules\async\dist\async.js:3182:24)
反对。(C:\Users\erosinger3\workspace\u fitchallinger\Backend\node\u modules\async\dist\async.js:1032:16)
在doNotify(C:\Users\erosinger3\workspace\u fitchallinger\Backend\node\u modules\loopback datasource juggler\lib\observer.js:157:11)
在doNotify(C:\Users\erosinger3\workspace\u fitchallinger\Backend\node\u modules\loopback datasource juggler\lib\observer.js:155:49)
在doNotify(C:\Users\erosinger3\workspace\u fitchallinger\Backend\node\u modules\loopback datasource juggler\lib\observer.js:155:49)
在doNotify(C:\Users\erosinger3\workspace\u fitchallinger\Backend\node\u modules\loopback datasource juggler\lib\observer.js:155:49)
在Function.ObserverMixin.\u notifyBaseObservers(C:\Users\erosinger3\workspace\u FitChallenger\Backend\node\u modules\loopback datasource juggler\lib\observer.js:178:5)
位于Function.ObserverMixin.notifyObserversOf(C:\Users\erosinger3\workspace\u fitchallinger\Backend\node\u modules\loopback datasource juggler\lib\observer.js:153:8)
在Function.ObserverMixin.\u notifyBaseObservers(C:\Users\erosinger3\workspace\u FitChallenger\Backend\node\u modules\loopback datasource juggler\lib\observer.js:176:15)
位于Function.ObserverMixin.notifyObserversOf(C:\Users\erosinger3\workspace\u fitchallinger\Backend\node\u modules\loopback datasource juggler\lib\observer.js:153:8)
在Function.ObserverMixin.\u notifyBaseObservers(C:\Users\erosinger3\workspace\u FitChallenger\Backend\node\u modules\loopback datasource juggler\lib\observer.js:176:15)
请原谅德国的错误信息。我不知道为什么在我今天更新VS代码后该文件已本地化…我建议检查该文件。找到您的执行dao函数的Model.notifyObserversOf('before save')并调试它。对我来说,代码看起来很棒。可能是其他观察员之一,删除选项。如果是这样,只需临时覆盖源代码,将options属性替换为setter并在其上设置断点。