【发布时间】:2018-10-31 06:25:24
【问题描述】:
TL;DR:如何使自定义类型字段在一种情况下需要(并对子文档运行验证)而在另一种情况下不需要(对子文档没有验证)?
我有一个adress 架构和使用此架构的模型(代码如下)。
在一种情况下它是必需的,而在另一种情况下则不是。那么如何正确验证address?如果此字段是必需的,则除了“公寓”之外的所有字段都应该是必需的,如果不需要,则可以为空或有效(对于索引情况)。
对于这种情况,是否有一些选项可以将一些选项传递给子架构,或者我应该在每个模型中制作自定义验证器?
// adress SCHEMA
module.exports = mongoose.Schema({
town: String,
index: {
type: String,
validate: {
validator: function (v) {
return /^\d+$/.test(v)
},
message: 'Invalid index'
}
},
district: String,
street: String,
house: String,
apartment: String
})
// user.js
const Address = require('./address')
const mongoose = require('mongoose')
const userSchema = mongoose.Schema({
address: {
type: Address,
required: true // Adress required here
}
})
module.exports = mongoose.model('User', userSchema)
// other.js
const Address = require('./address')
const mongoose = require('mongoose')
const otherSchema = mongoose.Schema({
address: Address // but not here
})
module.exports = mongoose.model('Other', otherSchema)
【问题讨论】: