Javascript 解决猫鼬虚拟财产中的承诺?
我使用异步虚拟属性来计算该文档在特定的其他集合中被引用的频率 但是,当我尝试这样渲染它时,它会返回一个承诺:Javascript 解决猫鼬虚拟财产中的承诺?,javascript,node.js,promise,async-await,mongoose-schema,Javascript,Node.js,Promise,Async Await,Mongoose Schema,我使用异步虚拟属性来计算该文档在特定的其他集合中被引用的频率 但是,当我尝试这样渲染它时,它会返回一个承诺:Promise{},显示的值是[objectpromise],就像joseym在这里描述的那样: 由于我直接传递morticians元素进行渲染,所以我知道在哪里放置所需的waitformortician.count。在将其传递到res.render之前,我希望避免循环(for(const mortician of morticians))。如何解决这个问题 在虚拟财产中查询(“Other
Promise{}
,显示的值是[objectpromise]
,就像joseym在这里描述的那样:
由于我直接传递morticians元素进行渲染,所以我知道在哪里放置所需的wait
formortician.count
。在将其传递到res.render
之前,我希望避免循环(for(const mortician of morticians)
)。如何解决这个问题
在虚拟财产中查询(
“OtherSchema.find..
)是否有意义?什么是最佳实践 您需要执行您的承诺,然后将结果保存在一个变量中,该变量将用于呈现它
像这样的
async index(req, res) {
try {
const morticians = await Mortician.find({}).exec();
res.render('pages/morticians', {
title: 'Bestatter',
page: req.originalUrl,
morticians: morticians
})
} catch (err) {
err => console.log(err)
}
}
事实上,我已经在用这个了,因为我问过。。我将更新我的问题代码。我看不出你真的在使用带回调的等待,这毫无意义,要么你有回调a然后链,要么等待…我对承诺和异步任务不熟悉,这就是我在这里问的原因。我在上面的问题中指明了两点,这两点对我来说似乎不清楚。
async index(req, res) {
try {
const morticians = await Mortician.find({}).exec()
res.render('pages/morticians', {
title: 'Bestatter',
page: req.originalUrl,
morticians: morticians
})
} catch (err) { err => console.log(err) }
..
}
async index(req, res) {
try {
const morticians = await Mortician.find({}).exec();
res.render('pages/morticians', {
title: 'Bestatter',
page: req.originalUrl,
morticians: morticians
})
} catch (err) {
err => console.log(err)
}
}