【发布时间】:2020-03-07 19:07:15
【问题描述】:
我将 Graphql 与 MongoDB 一起使用。在解析器中使用了子查询,但在执行子查询时主查询返回数据不等到子查询完成。 我想在解析器中使用子查询参数来操作主查询。
return await Articles.find({ Status: 1, isPublish : true })
.sort({TotalClapCount:-1})
.sort({ViewCount:-1})
.skip( offset )
.limit(limit)
.then( async ( lor ) => { await
lor.forEach(async function(data, key){
data["isBookmark"] =
await ArticleBookmarks
.find({ ArticleID : data["ID"], UserID : ArgsUserID, Status : 1 })
.countDocuments()
.then( (hre) =>{return (hre == 1) ? true : false; });
);
});
return lor;
});
我想在单个查询中显示带有书签的文章列表,但 return lor 在子查询操作之前执行。 async-await 如何为此工作?
【问题讨论】:
-
如果您使用适当的缩进格式化您的代码,我们将有更好的机会遵循它正在尝试做的事情。
-
因此,
.forEach()不会等待返回的承诺,因此其回调中的await不会做任何有用的事情。更改为常规的for循环,您将有更好的机会。如果不将代码复制到编辑器中并正确格式化,我真的不知道它还试图做什么。 -
@RatanUdayKumar - 您的解决方案有多个问题。它不会起作用。
-
@jfriend00 您可以发布您的解决方案。并希望对调查问卷有所帮助。
-
请检查我的解决方案。希望它会工作
标签: node.js mongodb express async-await graphql