Mongoose架构可选字段

Har*_*rCo 25 schema mongoose mongodb node.js

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

userschema = mongoose.Schema({
    org: String,
    username: String,
    fullname: String,
    password: String,
    email: String
});
Run Code Online (Sandbox Code Playgroud)

除了有时我需要添加更多字段.

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

Tal*_*wan 40

除了可选(默认)和必需之外,还可以基于一个或多个其他字段有条件地要求字段.

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

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


Joh*_*yHK 37

默认情况下_id,mongoose模式中的所有字段都是可选的(当然除此之外).

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

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

  • 当且仅当第三个字段具有'required:true`时,是否可以在几个字段上设置`required:true`?这个用例很常见......例如,只有当`isContractor`是必填字段时才需要`hourlyRate`和`endDate`. (3认同)