web-dev-qa-db-ja.com

Mongooseスキーマのオプションフィールド

私はこのようなnodejsにmongooseのユーザースキーマがあります

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

時々除いて、いくつかのフィールドを追加する必要があります。

主な質問は次のとおりです:monogooseスキーマにオプションのフィールドを含めることはできますか?

30
HarveyBrCo

Mongooseスキーマのすべてのフィールドは、デフォルトではオプションです(もちろん_id以外)。

フィールドは、定義に required: true を追加する場合にのみ必要です。

したがって、スキーマをすべての可能なフィールドのスーパーセットとして定義し、必要なフィールドにrequired: trueを追加します。

35
JohnnyHK

オプション(デフォルト)および必須に加えて、他の1つ以上のフィールドに基づいて、フィールドを条件付きで必須にすることもできます。

たとえば、電子メールが存在する場合にのみパスワードを要求します。

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