怀疑与for循环的Javascript异步问题

时间:2015-03-08 20:32:16

标签: 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 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);
    }
})

任何想法我做错了什么? 谢谢!

0 个答案:

没有答案