Mongoose架构可选字段

时间:2014-07-24 19:11:13

标签: node.js mongodb mongoose schema

我在这样的nodejs中有一个带有mongoose的用户模式

userschema = mongoose.Schema({
    org: String,
    username: String,
    fullname: String,
    password: String,
    email: String
});

除非有时我需要添加更多字段。

主要问题是:我可以在monogoose架构中使用可选字段吗?

2 个答案:

答案 0 :(得分:37)

可选(默认)和必需外,还可以根据一个或多个其他字段有条件地要求字段。

例如,仅在存在电子邮件时才需要密码:

var userschema = mongoose.Schema({
    org: String,
    username: String,
    fullname: String,
    password: {
        type: String,
        required: function(){
            return this.email? true : false 
        }
    },
    email: String
});

答案 1 :(得分:34)

默认情况下,mongoose架构中的所有字段都是可选的(当然除了_id之外)。

只有在required: true添加到其定义时才需要字段。

因此,请将您的架构定义为所有可能字段的超集,并将required: true添加到所需的字段中。