我有下面的架构允许我为现有应用创建徽章为“1234567”的用户。我希望收到maxlength validation的验证错误b / c。
我的架构有问题吗?
module.exports = function(db) {
var mongoose = require('mongoose');
var appSchema = mongoose.Schema({
name: {
type: String,
required: true,
unique: true,
},
settings: mongoose.Schema.Types.Mixed,
user: [{
badge: {
type: String,
minlength: 5,
maxlength: 5
}
}]
});
// Export the schema for the app to use
return db.model('apps', appSchema);
}
我正在尝试使用
apps.findByIdAndUpdate(req.params.id, {$push: {user: req.body.user}}, {runValidators: true},callback());
将新用户记录添加到应用程序文档中的数组中。
答案 0 :(得分:1)
验证者只会work on updates for $set and $unset operations,所以我相信在这种情况下你必须在更新之前手动验证。
答案 1 :(得分:0)
从文档mongoose requires an Schema to validate nested objects开始。
所以你的架构应该这样定义。
您可以尝试使用以下定义吗?
var userSchema = mongoose.Schema({
badge: {
type: String,
minlength: 5,
maxlength: 5
}
});
var appSchema = mongoose.Schema({
name: {
type: String,
required: true,
unique: true,
},
settings: mongoose.Schema.Types.Mixed,
user: [userSchema]
});