残念ながら、これは十分に文書化されていません(Document.js APIドキュメントには記載されていません)が、ドキュメントはconstructor
を介してモデルにアクセスできます。 フィールド-プラグインからのログ記録に常に使用しているため、プラグインが接続されているモデルにアクセスできます。
module.exports = function readonly(schema, options) {
schema.pre('save', function(next) {
console.log(this.constructor.modelName + " is running the pre-save hook.");
// some other code here ...
next();
});
});
あなたの状況では、次のことができるはずです:
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 now works
this.constructor.findOne({slug: idea.slug}, function(err, doc) {
console.log(err);
console.log(doc);
next(err, doc);
});
//console.log(idea);
});