MongoDB的新手,所以我希望我的术语正确......
我有一个包含用户集合的数据库。在节点中,我想检查一个字段的值,但是,首先我需要确保该字段存在。
例如,这是我的用户架构:
var mongoose = require('mongoose');
var userSchema = mongoose.Schema({
local: {
email : String,
password : String,
},
facebook : {
id : String,
token : String,
email : String,
name : String
}
}
有些用户同时拥有本地和facebook文档/字段?而其他人可能也有。
如果文档中存在两个字段,我希望确认当前用户文档在两个字段中都有电子邮件值。即
User.local.email & User.facebook.email
如果我尝试直接访问电子邮件字段并且该文档的字段不存在,我会:
TypeError: Cannot read property 'email' of undefined
答案 0 :(得分:0)
试试这个 -
var localExists = User.local != null;
var facebookExists = User.facebook != null;
if(localExists && facebookExists){
// both exist so check if both have email
var bothHaveEmail = User.local.email != null && User.facebook.email != null;
}
else if(localExists){
// only local exists
}
else if (facebookExists){
// only facebook exists
}
else{
// nothing exists
}
答案 1 :(得分:0)
你可以尝试
const localEmail = user.local && user.local.email;
const fbEmail = user.facebook && user.facebook.email;
如果其中一个设置为undefined
,则表示该电子邮件字段不存在