sql >> データベース >  >> NoSQL >> MongoDB

Mongoose pre.save()非同期ミドルウェアが期待どおりに機能しない

    並列ミドルウェアコールバック関数を使用しています(両方のnext およびdone )、ただし、schema.preで並列フラグを設定していません シリアルルールを使用するようにパラメータを設定します。

    したがって、呼び出しに並列フラグを含めるか、次のようにします。

    schema.pre("save", true, function(next, done) { ...
    

    または、必要なのがそれだけの場合は、シリアルミドルウェアコールバックスタイルに切り替えます。

    schema.pre("save", function(next) {
        var self = this;
    
        model.findOne({email : this.email}, 'email', function(err, results) {
            if(err) {
                next(err);
            } else if(results) {
                console.warn('results', results);
                self.invalidate("email", "email must be unique");
                next(new Error("email must be unique"));
            } else {
                next();
            }
        });
    });
    



    1. マングースインデックスはすでにさまざまなオプションで存在しています

    2. MongoDBコレクションのハイフンでつながれた名前

    3. mongoose/mongodbクエリ複数ソート

    4. Mongodb Mongoimportが大きすぎます:解析エラーの失敗