2017-02-03 76 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); 
});