mongoose中嵌套查询执行的问题
Issue with Nested query execution in mongoose
我正在尝试以下查询。我写这篇文章是为了获得文档列表,对于每个文档,我需要运行一些逻辑来获得标记列表。使用这个标签列表,我用获得的标签列表更新文档。
我得到的"updateAndPrint"函数的标记列表为空。我想这是一个承诺即将出现的问题。
以下是查询:
DB.todoTable.find()
.limit(10)
.exec(function (err, todos) {
var tags = [];
for (var todo in todos) {
var text = todos[todo].text;
var id = todos[todo]._id;
console.log(text);
tags = getTagsList(text);
(function updateAndPrint(id, tags) {
DB.todoTable.update({_id: id}, {$addToSet: {tags: {$each: tags}}},
function (err, numberUpdated, result) {
if (err) throw err;
(function printResult(id) {
DB.todoTable.findOne({_id: id})
.exec(function (err, todo) {
if (err) throw err;
console.dir(todo.tags);
});
})(id);
});
})(id, tags);
}
console.dir(tags);
});
如何运行此查询。或者有没有更好的方法来实现同样的逻辑。
编辑
在运行更新操作之前,必须执行'tags=getTagsList(text)'。
使用findAndModify
而不是更新并设置选项{new: true}
。
更新
您可以将要作为回调调用的函数传递给findTags
,因此findTags(text)
将具有findTags(text, callback)
,其中回调将为updateAndPrint
函数。因此,当您在findTags
中获得所有数据时,您可以调用callback
。
相关文章:
- AJAX成功回调-执行javascript时出现问题
- JavaScript 中的执行顺序问题
- 使用 GitHub API 在 dojo 中执行 PUT 更新会返回 400:解析 JSON 时出现问题
- 在ajax.load调用后执行javascript时出现问题
- 带有两个提交按钮的提交表单,每个按钮执行不同的操作问题
- javascript中同步函数执行中的问题
- mongoose中嵌套查询执行的问题
- I'我在使用聚合核心ajax发送表单结果时遇到问题-go没有执行
- JS函数执行出现问题
- 从javascript或JQuery执行服务器端cgi代码时遇到问题
- 无法使用谷歌地图在“文档”上执行“写入”(信息窗口问题)
- 我在 JavaScript 中的自执行匿名函数有什么问题
- Java脚本(根本没有)被I.E.或Firefox执行,但Chrome没有问题
- onscroll 函数执行多个条件语句的问题
- 代码只是没有执行,可能有语法问题,或者我可能完全错了
- jQuery中嵌套的.each()循环异步执行的问题
- Javascript 执行问题
- 解决所有延迟问题后执行某些操作
- JS自执行函数在头中创建文本节点时出现问题
- 使用ibm_db模块在Node JS中执行prepared语句时出现问题