为什么mochaoose上的mocha断言失败.Schema.objectId?

cod*_*ode 4 mocha.js mongoose mongodb node.js

我在摩卡的某个地方断言:

assert.equal(model.organizationId,objId);
Run Code Online (Sandbox Code Playgroud)

但我得到失败的摩卡结果为:

Uncaught AssertionError: "5225777180a843d901000012" == "5225777180a843d901000012"
Run Code Online (Sandbox Code Playgroud)

为什么它会发生,当id是相同的.

以及如何克服它?

Pet*_*ons 11

所以javascript中的mongodb ObjectIds在这方面令人沮丧.它们是不同的对象,obj1 === obj2即使它们表示的值相同,也会导致评估为false.有3种选择:

  1. 比较前转换为字符串.我经常使用它,因为它非常令人沮丧.

  2. 使用.equals()他们提供的方法:assert.ok(model.organizationId.equals(objId))

  3. 编写一个自定义比较函数,可以取null,ObjectIds或Strings并做正确的事(我也做过这个)