使用mongoose

时间:2017-02-02 07:23:43

标签: node.js mongodb

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

2 个答案:

答案 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,则表示该电子邮件字段不存在