我正在使用MongoDB w/ Mongoose ORM在Node.js / Express中构建一个基本的博客。
我有一个预先的“save”挂钩,我想用它来自动生成一个博客/想法的slug。这部分工作得很好,但是如果在继续之前要查询是否存在具有相同slug的其他帖子,则会出现问题。
然而,看起来this
无法访问.find或.findOne(),所以我一直在收到错误。
最佳方法是什么?
IdeaSchema.pre('save', function(next) {
var idea = this;
function generate_slug(text) {
return text.toLowerCase().replace(/[^\w ]+/g,'').replace(/ +/g,'-').trim();
};
idea.slug = generate_slug(idea.title);
// this has no method 'find'
this.findOne({slug: idea.slug}, function(err, doc) {
console.log(err);
console.log(doc);
});
//console.log(idea);
next();
});
findOne()
的结果抛出错误或其他操作,则需要将next()
回调移动到findOne
回调函数内部。 - ccnokes