【问题标题】:Trying out TingoDB: Issue passing global var to insert试用 TingoDB:问题将全局变量传递给插入
【发布时间】:2017-02-01 18:46:33
【问题描述】:

我正在使用 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,而在第二种情况下,只添加了一个条目。

【问题讨论】:

    标签: javascript node.js tingodb


    【解决方案1】:

    您提供的两个代码示例之间没有区别。

    另外,test 在这两种情况下都是全局变量。 for 没有创建它的范围,并且由于提升了您的第二个代码示例,如下所示:

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

    如您所见,它几乎就像第一个一样。唯一的区别是它每次都会创建一个新的{ hello: 'world' } 对象并将其分配给test 变量。所以collection.insert 将在您的两个代码示例中获得相同的数据。

    我认为问题出在您未在此处提供的代码中。

    【讨论】:

    • 是的,你是对的。更多的是我对编写异步代码还很陌生。除了我提供的代码位,没有什么其他的了。我只是从这里 github.com/sergeyksv/tingodb#usage 开始适应,我想我必须把它当作开发人员的一个错误......我会接受你的回答,因为现在我至少确认它不是提升也不是范围。
    猜你喜欢
    • 2014-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    相关资源
    最近更新 更多