目前,我正在尝试以下操作:
const ItemSchema = mongoose.Schema({
...
name : String
...
});
ItemSchema.pre('save', async function() {
try{
let count = await ItemSchema.find({name : item.name}).count().exec();
....
return Promise.resolve();
}catch(err){
return Promise.reject(err)
}
});
module.exports = mongoose.model('Item', ItemSchema);
但我只是得到以下错误:
TypeError:ItemSchema.find不是函数
如何在post('save ')中间件中调用.find()方法?(我知道Schmemas上有一个唯一的属性。如果名称字符串已经存在,我必须这样做才能给它添加后缀)
Mongoose 版本:5.1.3 nodejs版本:8.1.1系统:Ubuntu 16.04
2条答案
按热度按时间vqlkdk9b1#
find
静态方法在模型上可用,而ItemSchema
是模式。它应该是:
或者:
注意,
Promise.resolve()
在async
函数中是冗余的,它已经在成功的情况下返回resolved promise,Promise.reject
也是如此。xiozqbni2#
我们可以先声明模型名称,然后用它通过名称获取模型示例,然后我们就可以使用model.ex的静态函数:find、findOne ...等