【问题标题】:How to specify schema attributes for mongoose subdocument?如何为猫鼬子文档指定架构属性?
【发布时间】:2016-08-20 21:55:37
【问题描述】:

我正在构建一个插件,需要为其中一个子文档集合字段指定属性。有人提到statics官方的这样做方式。

所以,而不是...

var familySchema = mongoose.Schema({
    surName   : { type: String },
    members   : { type: [ personSchema ], minLength: 1, maxLength: 10 } 
});

...应该是这个...

var familySchema = mongoose.Schema({
    surName   : { type: String },
    members   : [ personSchema ]
});
familySchema.static('minLength', 1);
familySchema.static('maxLength', 10);

我知道没有minLengthmaxLength。插件会处理这个问题。

我一直在查看文档,找不到任何提及 官方 方式的内容。两者之间有什么好处吗?

【问题讨论】:

    标签: node.js mongodb mongoose mongoose-schema


    【解决方案1】:

    你说得对,ref 数组没有 minLength 这样的东西。您必须使用自定义验证

    var validateFamilyLength = function (members) {
        return members.length > 1 && members.length < 10;
    };
    
    var familySchema = mongoose.Schema({
        surName   : { type: String },
        members   : { 
            type: [personSchema], 
            validate: [validateFamilyLength, 'Not valid members count']
        } 
    });
    

    但我强烈建议改用 refs

    var familySchema = mongoose.Schema({
        surName   : { type: String },
        members   : [{
            type: mongoose.Schema.ObjectId,
            ref: 'Person',
            validate: [validateFamilyLength, 'Not valid members count']
        }]
    });
    

    【讨论】:

    • 很抱歉给您带来了困惑。为了清楚起见,我改写了这个问题。我正在尝试确定声明这些属性的 首选 方式。
    猜你喜欢
    • 2021-07-05
    • 2016-07-30
    • 2013-02-20
    • 1970-01-01
    • 2015-06-26
    • 2015-10-01
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    相关资源
    最近更新 更多