2017-02-03 121 views
0

看來Mongoose hooks不能在macOS上工作。沒有顯示錯誤,但鉤子根本沒有被觸發。貓鼬鉤不能在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 El Capitan。我已經使用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); 
});