我目前正在尝试将自定义验证程序添加到我的模式中。出于某种原因,我无法查询数据库。有谁知道我的问题的解决方案?Mongoose自定义验证程序:检查数据库中是否存在值
这是架构:
var Portfolio = new Schema({
title: {
type: String,
required: [true, 'Title is required']
},
thumbnail: {
type: String,
required: [true, 'Thumbnail is required'],
},
description: String,
date: Date,
images: [String],
categories: [Schema.Types.ObjectId],
order: Number,
slug: {
type: String,
validate: {
validator: slugExists,
message: 'Slug already exists, choose a different title',
}
}
}, options);
这是检查是否存在数据的方法:
function slugExists(value) {
this.model.count({slug: value}, function(err, count) {
if (error) {
return err;
}
return count > 0;
});
}
当我运行的应用程序,我得到了以下错误消息:
TypeError: this.model.count is not a function
我也试过使用以下内容:
mongoose.model['portfolio'].count(...)
但结果是一样的。
我一直试图解决这个问题两个小时,甚至尝试了不同的方法(例如预钩)。但直接添加自定义验证到Schema感觉就像是最干净的条目。
希望你对我有一个解决方案。提前谢谢了!
杰弗里
嗯......为什么不在'slug'上添加一个'unique'索引?尽管如此,这个[answer](https://stackoverflow.com/a/14271900/1022914)可能会指引你。你有没有试过'mongoose.model('portfolio')。count(...)'? – Mikey
谢谢你的回答Mikey。可悲的是,这两种解决方案都无效。我不断收到以下错误:无法读取未定义的属性'count'。 – Jeffrey