sql >> Databáze >  >> NoSQL >> MongoDB

Jak se dotazovat z Mongoose pre hook v aplikaci Node.js / Express?

Bohužel to není příliš dobře zdokumentováno (v dokumentech API Document.js o tom není žádná zmínka), ale dokumenty mají přístup ke svým modelům prostřednictvím constructor pole – používám ho neustále k protokolování věcí z pluginů, což mi dává přístup k tomu, ke kterému modelu jsou připojeny.

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();
    });
});

Ve vaší situaci byste měli být schopni:

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);
});


  1. Odebrat pole nalezené v libovolném poli mongodb

  2. Chyba přetypování JSON.NET při serializaci Mongo ObjectId

  3. mongoose rozdíl findOneAndUpdate a update

  4. Vyhněte se Aggregate 16MB Limit