我有一个非常简单的节点脚本,它从外部URL解析json文件。我试图让脚本循环返回每个返回的记录,并决定将它添加到数据库(使用nedb),如果我们以前没有得到它。目前我的脚本看起来只处理json文件中的最后一条记录。
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);
}
})
任何想法我做错了什么? 谢谢!