0

我有一个非常简单的节点脚本,它从外部 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);
    }
})

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

4

0 回答 0