2011-12-07 9 views
4

私は単純なチュートリアルを使ってNode.js + mongodbを学習しています。問題は私がsave()することができないことです。このnode.js + mongooseコードがDBに保存されないのはなぜですか?

これは私が実行しているコードです:

mongoose = require('mongoose'), 
    Schema = mongoose.Schema; 

PostSchema = new Schema({ 
    title: String, 
    body: String, 
    date: Date 
}); 

mongoose.connect('mongodb://localhost/posterdb'); 
mongoose.model('Post', PostSchema); 
var Post = mongoose.model('Post'); 

// create a post and save it 
var post = new Post(); 

post.title = 'My first post'; 
post.body = 'Post body'; 
post.date = Date.now(); 

post.save(function(err) { 
    console.log('error check'); 
    if(err) { throw err; } 
    console.log('saved'); 
    mongoose.disconnect(); 
}); 

それは、コンソールには何も印刷されません。何か案は?

+1

接続が確立されますか。イベント 'mongoose.connection.on(" open "、function(){...})'を試してください。 – pimvdb

+0

うーん、興味深い。それは確立されていません。 mongoose.connect( 'mongodb:// localhost/posterdb'、function(err){console.log(err); }); [スタック:[Getter/Setter]、 引数:未定義、 タイプ:未定義、 メッセージ: '[localhost:27017]に接続できませんでした'} –

+1

サーバーがそのホストとポートで実行されていますか? – pimvdb

答えて

4

ubuntuにmongoをインストールすると、デフォルトで/ data/dbディレクトリがインストールされていないため、mongodbサーバーが起動していませんでした。作成した、サーバーを起動し、すべてうまくいきました。解決済み。

3

誰もが私がやったのと同じ理由のためにこの質問を見つけた場合は、多分これは役立ちます:私は私のコレクションに新しいオブジェクトを保存することができなかったことが判明

。 MongoDBのvalidate()関数に干渉したvalidate()というスキーマメソッドを作成しました。そのため、DBに保存されず、エラーが発生していました。したがって、スキーマ内のvalidate()という名前のメソッドの名前を指定しないでください。うまくいけば私の愚かさはあなたに多くの時間を節約します。

+0

ああ、..時間を節約してデバッグできました。ありがとう! – Ben