2016-09-23 3 views
0

私は、node.jsを使用していくつかの埋め込みDBをテストし、ベンチマークしています。これはTingoDBを試す:グローバル変数を渡して挿入する問題

var test = { hello:'world' }; 
for (var j = 0; j < size; j++) { 
    collection.insert(test, { w: 1 }, function() {}) 
} 

に動作しますが、これではない、なぜTingoDBでは、誰もが知っている:、最初のケースでは、データベースが後者の場合には、sizeまでの記録で埋めながら、取得している

for (var j = 0; j < size; j++) { 
    var test = { hello:'world' }; 
    collection.insert(test, { w: 1 }, function() {}) 
} 

のみ1エントリが追加されます。

答えて

1

あなたから提供された両方のコード例の間に違いはありません。

また、testはどちらの場合でもグローバル変数です。 forはそれのスコープを作成していない、と巻き上げのために2番目のコード例は次のようになります。あなたが見ることができるように

var test; 
for (var j = 0; j < size; j++) { 
    test = { hello: 'world' }; 
    collection.insert(test, { w: 1 }, function() {}); 
} 

は、それはほとんど最初のもののようです。唯一の違いは、新しい{ hello: 'world' }オブジェクトが作成され、毎回test変数に割り当てられることです。したがって、collection.insertは両方のコード例で同じデータを取得します。

問題は、ここでは提供していないコードのどこかにあると思います。

+0

はい、そうです。私は、非同期コードを書くのはかなり新しいです。私が提供したコードのビット以外に、それほど多くはありません。私はちょうどhttps://github.com/sergeyksv/tingodb#usageから文字通りに適応していました。私は開発者にバグとして取り上げなければならないと思います...私はあなたの答えを受け入れます。少なくとも確認では吊り上げもスコープもない。 –

関連する問題