在猫鼬中,检查字段值未定义而不是假的正确方法是什么?
我们有一个模型,该模型具有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
答案 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