我将尽力解释这种奇怪的情况。
我已经创建了一个操作钩子"before save"
,并将其放在mixin
中,以将其添加到某些模型中。
此混入使用context.options
来获取当前的userId
做某事。
如果我直接调用该操作(例如POST /Accounts
),则此mixin可以正常工作。
但是,如果我在远程方法中调用它,则context.options为空,例如,如果我们有一个名为POST /Accounts/Signup
的方法,在其中,我们称为Account.create(...)
,即{{ 1}}钩子收到"before save"
作为options
此处已托管沙箱项目 https://github.com/mustafamagdy/loopback-sandbox-issue
mixin代码段如下:
empty object {}
答案 0 :(得分:0)
在调查之后,我发现这个issue谈论着类似的行为,但是,这些评论具有破坏性。因此,我想在这里为面临相同问题的任何人写下结论。
回送(Loopback)要求您将您从远程方法声明的选项传递给模型方法,如果您想在操作挂钩上接收它,那么我最终这样做了。
module.exports = function(Note) {
Note.makeNew = makeNew;
async function makeNew(options) {
await Note.create(obj, options);
}
};