VersionError:仅在(Mocha)testing中发现匹配的文档错误
我已经阅读了其他问题/答案的人有版本的关键,但由于某种原因,我不明白为什么这具体发生在我的情况。
所以我有以下摩卡testing:
it('should be able to save one job', function (done) { Promise.join(user.saveAsync(), company.saveAsync(), function (savedUser, savedCompany) { user = savedUser[0]; user.jobs.push(job); user.saveAsync() .spread(function (savedUserWithJob) { user = savedUserWithJob; user.jobs.should.have.length(1); done(); }) .catch(function (err) { done(err); }); }); });
这一切都很好,并通过。 即使在运行时我也没有任何其他问题。
现在当我尝试在第一个之后再次运行相同的testing时,
it('should be able to save one job', function (done) { ..... }); it('should be able to save one job again', function (done) { ..... });
第二个失败,错误:
VersionError:未find匹配的文档。
我真的不明白为什么会发生这种情况,因为我已经在没有版本问题的情况下第一次推入arrays了。 为什么连续第二次失败?
Mongoose versionKey在文档上保存一个版本号,通常名为__v
。
只要对数组的修改可能改变任何数组元素的位置,该值就会自动递增。 对于任何需要使用位置表示法的更新,该值也会在where子句中发送。 如果我们的where子句仍然匹配文档,它确保没有其他操作已经改变了我们的数组元素的位置,可以使用使用位置语法。 ( 在这里阅读更多 )
在你的testing中,首先save()
,文档增加了__v
,这应该在你的文档上更新以供mongoose作为第二个save()
的where clause
一部分使用。