2017-02-03 4 views
0

Кажется, что Mongoose hooks не работают на macOS. Ошибка не отображается, но крючки просто не запускаются.Крючки Mongoose не работают на 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); 
    }); 
}); 

ли я ошибусь, я покрытый ямочками не вижу или что-нибудь еще, что я пропустил? Предварительное сохранение просто не вызывается. То же самое происходит для post save.

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); 
}); 
Смежные вопросы