猫鼬布尔值false与未定义?

时间:2019-07-06 22:08:39

标签: node.js mongodb mongoose

在猫鼬中,检查字段值未定义而不是假的正确方法是什么?

我们有一个模型,该模型具有Boolean属性,但最初并未设置。因此,可能的值实际上是:undefined |真实|假。在这里我们需要区分。

该操作是通过基于NodeJS的应用程序完成的。

根据要求的示例:

// Simply schema
const PreferencesSchema = new mongoose.Schema({
   forUser: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }
   allowActionX: {
        type: Boolean,
        default: undefined
    }
});

const Preferences = mongoose.model<any>('Preferences', PreferencesSchema);

const preferences = Preferences.findOne({ user: user });

// if preference.allowActionX is not defined:
//   use default behaviour
// else if preference.allowActionX is true
//   do action X
// else 
//   don't do action X

1 个答案:

答案 0 :(得分:0)

如果要返回存在字段且不为null的文档,请使用{a:{$ ne:null}}

否则,您还可以使用===运算符检查后缀,以确定某些错误与未定义 JavaScript中的三等号===用于测试严格相等性。这意味着我们要比较的类型和值必须相同。

if (myvar === false) {
  //insert code
}
else if ( myvar === undefined){
  //insert code
}

https://codeburst.io/javascript-double-equals-vs-triple-equals-61d4ce5a121a