我正在做关于MDN文档的Express本地库教程,想尝试在不使用回调方法的情况下返回对象。
当将id的请求对象参数传递给findById mongoose方法(如var bookinstance = BookInstance.findById(req.params.id);
)并将log传递到控制台时,这是bookinstance的内容:BookInstance.findOne({ _id: '63e17d2395d1d4e11604cf22' })
向findById方法传递id和回调函数时,如下所示
BookInstance.findById(req.params.id, function(err, instance) {
if (err) {
next(err);
}
console.log('findById callback: ' + instance);
res.render("bookinstance_delete", {
title: "Book Instance Delete",
id: instance._id,
imprint: instance.imprint,
book: instance.book
})
})
并登录到控制台,输出期望的书示例对象:
findById callback: {
_id: new ObjectId("63e17d2395d1d4e11604cf22"),
book: new ObjectId("63e17d2395d1d4e11604cf16"),
imprint: 'New York Tom Doherty Associates, 2016.',
status: 'Available',
due_back: 2023-02-06T22:20:19.928Z,
__v: 0
}
这和javascript有什么关系吗?这是我第一次接触express、node、mongoose以及所有这些基于javascript的框架和技术,它们似乎都大量使用回调。回调的目的是不是只是有一种方式说,嘿,执行这个任务,当你完成时,做这个任务?
当我没有使用回调时,返回的对象是对象和方法(findone),当执行时,会给予我bookinstance对象和属性。所以回调函数会将该对象作为示例参数,执行它并返回该对象?是这样吗
1条答案
按热度按时间tkclm6bt1#
您应该
await
返回的查询以检索结果:别忘了将它嵌套到
async
函数中。