根据loopback's official docs,updateAll方法采用3个参数:where,data,callback和需要callback的
。Account.deleteSingleHearingTest = function (req, callback) {
Account.findById(req.accessToken.userId)
.then(account => {
if (!account) {
throw new Error('Cannot find user');
}
return app.models.HearingTest.updateAll({ accountId: account.id, id: req.body.hearingTestId }, { isDeleted: new Date() });
})
.then(() => {
callback(null);
})
.catch(error => {
callback(error);
});
}
我可以看到前两个参数在那里,但是,回调似乎并不是方法调用的一部分。回调不应该是updateAlll方法的一部分吗?
答案 0 :(得分:0)
我将在回答中详细说明我的评论。我敢打赌,您的代码实际上并不起作用,您只是认为它可以起作用。
让我们说,对updateAll
的调用返回了一些内容(即不会引发错误)-无论该值是否为null,未定义,为true,等等-然后您的回调将立即被调用并且实际上不会等待您的updateAll
执行异步操作。现在,如果对updateAll
的调用足够快,它可能会出现给您,表明代码实际上没有起作用。
这可能有助于说明我的意思更好:
Promise.resolve()
.then(function() { return undefined; })
.then(function() { console.log('it worked!'); });
您可以做两件事(彼此不依赖):
updateAll
的返回值,看看它是否是一个承诺我个人来说,我会做1,然后我会做2:)