0
我有貓鼬架構貓鼬模式驗證XOR領域
var Mongoose = require("mongoose");
var Schema = Mongoose.Schema;
var headerSchema = new Schema({
lang : {
type: String,
required: true,
match: [ /^(en|es|pt)$/, "{VALUE} is not a supported language" ],
index: { unique: true }
},
menu : {
type: [{
link: { type: Schema.ObjectId, ref: "Link"},
dropdown: { type: Schema.ObjectId, ref: "Dropdown"},
autopopulate: true
}]
}
});
headerSchema.plugin(require("mongoose-autopopulate"));
module.exports = Mongoose.model("header", headerSchema);
正如你可能已經猜到下面,這說明了一個網頁的頭一個配置文件。這個頭部有一個導航(模式中的菜單),其中每個項目可以是一個下拉菜單或一個鏈接,但不是兩個。有沒有辦法將自定義驗證添加到我的模式,只允許保存文檔,如果其中任何一個設置,但不是兩者都不是? (想想布爾運算異或)
例如,這是一個有效的頭文件:
{
lang: "es",
menu: [{
link: {
title: "Contact",
href: "/contact"
}
}, {
dropdown: {
title: "FAQ",
links: [{
title: "What is this?",
href : "/about"
}]
}
}]
}