Mongoose挂钩不适用于macOS

时间:2017-02-03 07:43:23

标签: node.js mongodb macos mongoose

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

我是否犯了一个错误,我完全看不到或者还有什么我错过的?根本不调用预保存。保存帖子也会发生同样的事情。

save()应该触发预保存回调。

如何解决这个问题?

我正在使用macOS Sierra。据我所知,它正在我的Linux机器上运行(目前不在这里)。

1 个答案:

答案 0 :(得分: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);
});