【问题标题】:mongoose query / insert disorder bug?猫鼬查询/插入混乱错误?
【发布时间】:2012-07-24 21:40:01
【问题描述】:

我正在编写一个数据库测试(由 Mocha 运行),在保存文档后调用 findOne 并发现一个奇怪的行为:

这里的伪代码: ...

test1
A.save(check('A',done));

test2
B.save(check('B',done));

test3
C.save(check('C',done));
...

check = function(name, done) {
   theModel.findOne({name:name}, function(err,result) {
       assert.notEqual(result,null);
       result.remove(done);
   });
}

然后,A 测试通过但 B 测试没有通过。我检查了日志,发现了一件奇怪的事情: 首先,它在查询之后、删除之后执行插入(对于第一次测试,这就是预期的行为)。 在第一次测试之后,当我看到在插入之前执行查询时我感到震惊(因此测试失败并且没有任何内容被删除)。 第三个等等行为相同!在插入之前执行查询:(

因此,唯一通过的测试是第一个测试(如果我将 A 更改为 B,则 B 通过并且 A 不通过)。如果我查看 mongodb 集合,我可以看到在查询之后执行的其他插入(并且由于断言失败,它们没有被删除)

我正在使用 mongoose 2.7.2,(但我使用的是以前的版本,刚刚更新以查看它是否是已解决的错误)。帮助:(

【问题讨论】:

    标签: javascript node.js mongodb mongoose mocha.js


    【解决方案1】:

    我错了……

    没有注意到我在调用 save 之前实际上是在调用 check (因为我是在 save 方法中调用函数...我太笨了,而且对 javascript 很陌生)。

    好的,所以我应该以其他方式执行检查:

    A.save(function(err, result) { check('A', done);})
    

    我很抱歉!

    【讨论】:

      猜你喜欢
      • 2017-04-09
      • 2015-06-20
      • 2014-07-15
      • 1970-01-01
      • 2020-06-02
      • 2012-02-03
      • 2018-06-15
      • 1970-01-01
      • 2021-03-23
      相关资源
      最近更新 更多