CNode

循环查询时异步问题

问答
Yyangzichen987046发布于10 年前最后回复10 年前5 回复3782 浏览0 收藏

if (docs) { db.collection('users', function(err, collection){ docs.forEach(function (docs) { console.log(docs) collection.find({"_id":ObjectID(""+docs+"")}).toArray(function(err,itens){ if (err) { console.log("err") return callback(err); } console.log(itens[0].name) piclist.push(itens[0].name) if(piclist.length == docs.length){ callback(null, docs, total,piclist); } }); }) }); }

我已经得到docs是一个数组 QQ截图20160928160721.png 我去到user表里QQ截图20160928160819.png根据_id,取出对应的name, 输出结果为QQ截图20160928160919.png,为什么name和_id不对应,是不是哪里写错了,求大神给出修改方案啊!!!

查看回复

回复 (5)

F
foora#1·10 年前

你用DOCS查name的那步操作是异步的,执行时会按顺序执行,返回的结果就不一定了。

G
Galen-Yip#2·10 年前

docs foreach 里面的 docs 写成 doc吧。。。

N
Neil-UWA#3·10 年前
data.forEach(docs=>{
	((docs)=>collection.find({"_id":ObjectID(""+docs+"")}).toArray(doSomething))(docs)
})
D
DevinXian#4·10 年前
引用 Neil-UWA

@Neil-UWA 闭包的变量持有作用是明显的,最好还是加个说明,这样好理解一些^_^

C
captainblue2013#5·10 年前

代码格式化一下好吗

参与回复
登录后即可参与回复。登录