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是一个数组 我去到user表里根据_id,取出对应的name, 输出结果为,为什么name和_id不对应,是不是哪里写错了,求大神给出修改方案啊!!!
你用DOCS查name的那步操作是异步的,执行时会按顺序执行,返回的结果就不一定了。
docs foreach 里面的 docs 写成 doc吧。。。
data.forEach(docs=>{
((docs)=>collection.find({"_id":ObjectID(""+docs+"")}).toArray(doSomething))(docs)
})
@Neil-UWA 闭包的变量持有作用是明显的,最好还是加个说明,这样好理解一些^_^
代码格式化一下好吗