2011-12-07 113 views
4

我正在學習Node.js + mongodb使用一個簡單的教程 - 問題是,我不能得到它保存()。爲什麼這個node.js + mongoose代碼保存到數據庫?

這是我運行代碼:

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); });打印:{stack:[Getter/Setter], 參數:undefined, type:undefined, message:'failed to connect to [localhost:27017]'} –

+1

您確定服務器正在該主機和端口上運行嗎? – pimvdb

回答

4

原來我的mongodb服務器沒有運行,因爲我在ubuntu下安裝mongo時默認沒有安裝/ data/db目錄。創建,啓動服務器,一切正常。解決了。

3

如果有人發現我做同樣的原因這個問題,那麼也許這將幫助:

發現我不能一個新的對象保存到我的收藏。我製作了一個名爲validate()的模式方法,它干擾了MongoDB的validate()函數,所以這就是爲什麼它不保存到數據庫並給我零錯誤。所以不要在您的模式中命名爲validate()的方法。希望我的啞巴會爲你節省很多時間。

+0

呵呵。你爲我節省了數小時的調試時間。謝謝 ! – Ben

相關問題