【发布时间】:2022-01-15 02:06:36
【问题描述】:
您好,我有一个用于蛞蝓的猫鼬模式。我想检查它的唯一性
slug: {
type: String,
default: "",
trim: true,
validate: {
validator: async function (value) {
const user = await this.model.findOne({ slug: value });
console.log(user);
console.log(this);
if (user) {
if (this.id === user.id) {
return true;
}
return false;
}
return true;
},
message: (props) => "This slug is already in use",
},
},
在插入新文档时,此验证工作正常,但在更新案例时,我想将其与架构中除自身之外的所有其他字段进行比较。我怎么能这样做
I have also added runValidators to check validation when updating also
CMS.pre("findOneAndUpdate", function () {
this.options.runValidators = true;
});
如果您能建议一种在插入和更新时检查 mongoose 中 slug 唯一性的更好方法
提前致谢
【问题讨论】:
-
这种方式有什么问题?你遇到什么问题了吗?
-
插入时工作正常,但在更新时将 slug 与我正在尝试更新的当前文档进行比较,并给出验证错误,希望跳过当前文档并仅与其他文档进行比较
标签: node.js mongodb express validation mongoose