Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
for循环怀疑存在Javascript异步问题_Javascript_Json_Node.js_Nedb - Fatal编程技术网

for循环怀疑存在Javascript异步问题

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

我有一个非常简单的节点脚本,它从外部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);
    }
})
知道我做错了什么吗?
谢谢

臭名昭著的循环问题,你有生命,但你没有接近
i
,像这样做->@adeneo你是一个传奇!非常感谢您提供的快速解决方案-现在效果非常好:)