我正在使用findByIdAndRemove
猫鼬查询方法执行删除操作,并希望确保返回已删除的文档。我在Google上进行了搜索,发现我们将回调传递给findByIdAndRemove
,在其中我们传递了err, doc args
,如果删除成功,则删除的值将返回到doc中,这可以从fn调用中返回。但是我对async and await
感到有些困惑。我有deleteUserTask
fn,内部调用async deleteUserTask
fn,它是基于promise的,并期望有一个promise的回报,当resolved (.then)
时,我可以获取已删除任务的值。
我不确定如何从我的async deleteUserTask
fn返回doc的值,然后将其在.then
Promise中解析,我可以使用它吗?
采用以下方法时,由于我根本不返回doc值,因此返回的值为null
。
function deleteUserTask(req, res, next) {
taskService
.deleteUserTask(req.params.taskId)
.then(task => {
console.log(
"Delete task request took " + (moment.now() - req.requestTime + " ms")
);
// below gives null
console.log(task);
res.json({ task });
})
.catch(err => next(err));
}
taskService.js
async function deleteUserTask(id) {
return await Task.findByIdAndRemove(id, function(err, doc) {
if (err) {
return err;
}
});
}
答案 0 :(得分:3)
在使用诺言的情况下,不应将DropdownButton<int>(
hint: Text("Pick"),
items: <int>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((int value) {
return new DropdownMenuItem<int>(
value: _number_tickets_total,
child: new Text(_number_tickets_total.toString()),
);
}).toList(),
onChanged: (newVal) {
setState(() {
_number_tickets_total = newVal;
});
})
与回调一起使用。应该是:
findByIdAndRemove
在这一点上,使用async function deleteUserTask(id) {
return await Task.findByIdAndRemove(id);
}
函数没有任何好处,可以简化为:
async