2012-04-14 12 views
23
var mongo = require('mongoose'); 
var connection = mongo.createConnection('mongodb://127.0.0.1/test'); 

connection.on("error", function(errorObject){ 
    console.log(errorObject); 
    console.log('ONERROR'); 
}); 

var Schema = mongo.Schema; 
var BookSchema = new Schema({ title : {type : String, index : {unique : true}}}); 
var BookModel = mongo.model('abook', BookSchema); 
var b = new BookModel({title : 'aaaaaa'}); 

b.save(function(e){ 
    if(e){ 
    console.log('error') 
    }else{ 
    console.log('no error') 
}}); 

端末に「エラー」または「エラーなし」のいずれも出力されません。接続はもっと何ですか?「エラー」のいずれかが発生していないようです。私はMongoDbが動作していることを確認しました。Mongoose.js instance.save()コールバックが起動しない

答えて

60

これは、モデルをグローバルmongooseオブジェクトに追加するが、モデルが含まれていない別の接続mongo.createConnection()を開く場合です。モデルには接続がないので、dbに保存することはできません。

var connection = mongo.createConnection('mongodb://127.0.0.1/test'); 
// becomes 
var connection = mongo.connect('mongodb://127.0.0.1/test'); 

したり、別の接続にモデルを追加することによって:

var BookModel = mongo.model('abook', BookSchema); 
// becomes 
var BookModel = connection.model('abook', BookSchema); 
+0

おかげで@aaronheckmann! – LDK

+2

ありがとう、mongoosejs.comのチュートリアルへの修正を提出しました。 –

+0

@aaronheckmann、 'mongo.model'を' connection.model'に変更すると、 'TypeError:Undefined type at 'paths.login'が返されます。あなたは参照や配列を使用してのみ入れ子にすることができます。 ' –

0

が掲載答えは、問題が解決しない

これはグローバルマングース接続でMongoのために接続することにより、いずれかの解決され、 。残念ながら、データベースをアップグレードするだけでは解決できないので、それは私にとっても解決策ではありません。しかし、ここで私は、この問題に対する解決策を見つけた:https://github.com/Automattic/mongoose/issues/4064

示すようにジャスト.$__saveの代わり.saveを使用します。

var b = new BookModel({title : 'aaaaaa'}); 

b.$__save({}, function(e){ 
    if(e){ 
    console.log('error') 
    // callback will show if e exists 
    }else{ 
    console.log('no error') 
    // callback will show 'no error' 
}}); 
関連する問題