for(var i=0; i<10; i++){
//console.log(i);
var a = {seller_id : 1, order_id : 2};
console.log(i);
newAlready = new Already(a);
newAlready.save(function(err, doc){
console.log(doc);
});
}
我运行,但是只会插入执行一次newAlready.save,这是异步问题吗?谢谢!
是,这样肯定不行!
这种东西网上很多吧…用个闭包就可以搞定…
for(var i=0; i<10; i++){
//console.log(i);
(function (i) {
var a = {seller_id : 1, order_id : 2};
console.log(i);
var newAlready = new Already(a);
newAlready.save(function(err, doc){
console.log(doc);
});
})(i)
}
请问怎么解决?
试了下,不能解决,运行结果: 0 1 2 3 4 5 6 7 8 9 connected as id 156 9 [ { order_id: 2, seller_id: 1, _id: 53b24e9a48e957361684cfcb } ]
Already.save 是个异步方法吧…这样写应该没错吧. 查一下异常吧?
@youxiachai 嗯,是mongodb的存储。
这里没有闭包,不需要,主要问题是mongoose,第一次成功了,后几次都失败了,doc是null所以显示不出来,你输出err试试
使用async库,如果想本次循环结束再进行下次循环就使用async.whilst方法,如果要并行,就是用集合操作async.forEach
不会只执行一次吧,看代码应该是会执行10次的。
楼主,不是你这么干的吧,用async
我也用async模块
使用async promise 等同步模块吧~
肯定是newAlready.save自身的问题
代码问题吧!我循环插入几万条数据 都没出问题:https://gitcafe.com/zhaop_roc/AtlasSpider-3/blob/master/groupon/proxy/coupon.js 代码第113行,也是用的new 和 save
试试把回调去掉!
new Already(a) 中有异步操作吗 感觉还是异步的问题