for循环怀疑存在Javascript异步问题
我有一个非常简单的节点脚本,它从外部url解析json文件。我试图让脚本在返回的每条记录上循环,并决定将它添加到数据库中(使用nedb),如果我们以前没有得到它的话。目前,我下面的脚本似乎只处理json文件中的最后一条记录for循环怀疑存在Javascript异步问题,javascript,json,node.js,nedb,Javascript,Json,Node.js,Nedb,我有一个非常简单的节点脚本,它从外部url解析json文件。我试图让脚本在返回的每条记录上循环,并决定将它添加到数据库中(使用nedb),如果我们以前没有得到它的话。目前,我下面的脚本似乎只处理json文件中的最后一条记录 var Datastore = require('nedb') , db = new Datastore({ filename: 'foo.db', autoload: true }); var request = require('request'); ; var
var Datastore = require('nedb')
, db = new Datastore({ filename: 'foo.db', autoload: true });
var request = require('request');
;
var cgrecentsalesurl = "http://ffo.com.json";
request({
url: cgrecentsalesurl,
headers: {
'User-Agent': 'cgapistats'
},
json: true
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
var cgrecentsales = body["recent-sales"];
for (var i in cgrecentsales) {
console.log( "processing record " + i );
(function() {
var query = { saletimestamp : cgrecentsales[i].sold_at };
db.find( query , function( err, docs ) {
console.log( docs.length );
if ( docs.length == 0 ) {
db.insert( { item: cgrecentsales[i].item, saletimestamp: cgrecentsales[i].sold_at, amount: cgrecentsales[i].amount } );
console.log( "db record inserted" );
} else {
console.log( "record exists!" )
};
});
})();
}
} else {
console.log(response);
}
})
知道我做错了什么吗?
谢谢 臭名昭著的循环问题,你有生命,但你没有接近
i
,像这样做->@adeneo你是一个传奇!非常感谢您提供的快速解决方案-现在效果非常好:)