0

node.jsを使用して、いくつかの組み込みデータベースをテストおよびベンチマークしています。TingoDB を使用すると、これが機能する理由は誰でもわかります

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

しかし、これはそうではありません:

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

つまり、最初のケースではデータベースは までレコードでいっぱいになりますがsize、2 番目のケースでは 1 つのエントリのみが追加されます。

4

1 に答える 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、両方のコード例で同じデータが得られます。

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

于 2016-09-23T20:19:45.883 に答える