【发布时间】:2020-06-01 22:04:11
【问题描述】:
我有以下猫鼬的架构和模型:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const userSchema = new Schema({
username: { type: String, required: true, unique: true },
password: { type: String, required: true },
email: { type: String, required: true, unique: true },
first_name: String,
second_name: String,
roles: { type: [{ type: Schema.Types.ObjectId, ref: 'Role' }], required: true }
});
userSchema.virtual('fullName').get(function() {
return `${this.first_name} ${this.second_name}`;
});
module.exports = mongoose.model('User', userSchema);
当我创建一个没有角色字段的对象并将其保存时,我无法让 required 为 ObjectId 的数组工作并保存它,猫鼬不会抛出错误。我在这里做错了什么?
【问题讨论】:
-
您可以尝试像这样向角色添加验证吗?
validate: v => v == null || v.length > 0如here 所述。空数组验证在 mongoose V4 中有效,但在 V5 中发生了变化mongoosejs.com/docs/migrating_to_5.html#array-required -
太棒了,谢谢,如果你回答我会接受答案。
-
好奇
v => v == null || v.length > 0如果数组长度为 0 则会失败,但如果数组为空也会失败? -
返回 false 或抛出错误意味着验证失败。
-
你能检查我的答案吗?也许该链接中的验证逻辑不是我们想要的。
标签: javascript mongoose