Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 解决猫鼬虚拟财产中的承诺?_Javascript_Node.js_Promise_Async Await_Mongoose Schema - Fatal编程技术网

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
for
mortician.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)
  }
}