2017-02-03 24 views
0

Mongoose hooksはmacOSでは動作しないようです。エラーは表示されませんが、フックは単にトリガーされません。私が構築マングースフックが動作しない

最小限の例がある:

const Mongoose = require("mongoose"); 
Mongoose.connect("mongodb://localhost/test", (err, db) => { 

    console.log(err); 
    // => undefined 
    // (success) 

    // Create the model 
    const t = Mongoose.model("t", { 
     s: "string" 
    }); 

    // Do something pre save 
    t.schema.pre('save', function(next) { 
     // This is not triggered 
     console.log(">>>>>>>>>>>>>"); 
     console.log(this); 
     next(); 
    }); 

    // Insert a new object 
    new t({ s: "foo" }).save((err, data) => { 
     console.log(err, data); 
    }); 
}); 

私はdimply表示されていないか、私は逃した何かがある間違いを犯したのか?プリセーブは単に呼び出されません。ポストセーブでも同じことが起こります。

save()は、事前保存コールバックをトリガーする必要があります。

これを修正するにはどうすればよいですか?

私はmacOS Sierraを使用しています。私はそれが私のLinuxマシンで働いていたと言うことができます(現在ここにはありません)。

答えて

1

私はまだMacOSを実行していません(まだ)、私はまだOS Xのエルキャピタンを実行しています。私はMongoose 4.8.1を使って上記のコードをテストしましたが、ここでも動作しません。しかし、モデルが作成された後でモデルを作成し、そのモデルにスキーマをアタッチしていることに気付きました。スキーマを作成し、フックを付けてからモデルを初期化するときには、動作しているようです。

// Create the model 
var testSchema = new Mongoose.Schema({ 
    s: "string" 
}); 

// Do something pre save 
testSchema.pre('save', function(next) { 
    // This is triggered 
    console.log(">>>>>>>>>>>>>"); 
    console.log(this); 
    next(); 
}); 

// Create model of schema 
var testModel = Mongoose.model("Test", testSchema); 

// Insert a new object 
new testModel({ s: "foo" }).save((err, data) => { 
    console.log(err, data); 
});