【发布时间】:2020-12-13 09:55:56
【问题描述】:
假设我有一个Post 架构,我想要一个具有这种结构的方法:
function getPostDetails(post_id)
{
// The function searches the db for a document with that id,
// Finds it, and returns an object containing some of its details:
return {
title: post.title,
thumbnail: post.thumbnail,
views: post.views
// ....
};
}
它必须有这种形式,我有很多 async、lambda 和嵌套函数,我不想让代码变得更混乱......
我做了很多研究,但没有找到方法,可能是因为我不擅长处理承诺和异步代码?是的!
【问题讨论】:
-
这是一个对象,没有“JSON对象”这样的东西; JSON 是一种文本格式。无论如何,您需要将函数
async,await里面的DB查询,然后返回对象。调用函数时,还需要await调用。 (一旦任何异步调用进入画面,您就永远无法恢复正常返回;您必须从那时起等待一切) -
感谢您的重播,糟糕!我的错,我刚刚编辑了!但是我认为我的确切问题是如何从查询中将数据返回到函数外部,因为从(即)
mongoose.findById()函数返回的数据仅存在于内部函数内部...... -
返回数据正是使其可以从外部访问的原因。就做
const postData = await getPostDetails(123);还有这个参考骗子:stackoverflow.com/questions/23667086/… -
@str 不完全是!
-
是的,现在更清楚了。我添加了一个重复的问题,非常详细地回答了这个问题。或者,您也可以使用
return Post.findById(id).exec()。详情可见documentation。
标签: javascript node.js mongodb mongoose mongoose-schema