2013-02-07 86 views
2

我使用控制檯中的一小段代碼來測試MongoDB數據庫中的保存/檢索條目。它看起來像這樣:保存條目後nodejs mongoose不會返回到控制檯

var mongoose = require('mongoose'); 
var models = require('../models'); 
mongoose.connect('localhost', 'users'); 
var john = new models.User({ name:'John' }); 
john.save(function (err, john) { 
    if (err) { 
     console.log(err) 
    } 
    else { 
     console.log(john.name); 
    } 
}); 

我運行它之後,它顯示的名字,當保存條目,然後不回我安慰,並且不顯示任何消息。我怎樣才能讓我回到控制檯?

+0

什麼其他消息它應該返回嗎? – Floby

+0

不應該只是讓我在所有操作結束時自動進行控制? –

回答

3

你的node.js程序將不是隻要一個數據庫連接仍然是開放的退出,所以你需要關閉連接池你用它做這樣的後:

var mongoose = require('mongoose'); 
var models = require('../models'); 
mongoose.connect('localhost', 'users'); 
var john = new models.User({ name:'John' }); 
john.save(function (err, john) { 
    if (err) { 
     console.log(err) 
    } 
    else { 
     console.log(john.name); 
    } 
    mongoose.disconnect(); 
}); 
0

一旦對save()的調用完成,它會將您返回到控制檯,但那是調用回調之前。 如果保存操作花費了幾分鐘時間,則可以在此期間繼續使用控制檯進行播放。

保存操作完成後,您的回調被調用並將john.name輸出到控制檯。在REPL中打印到控制檯可能會有些棘手,因爲它會在您輸入的地方寫入。

所以我猜你認爲所有東西都被阻塞了,因爲你沒有看到提示>>但實際上它存在,只是console.log寫在該行上。如果您嘗試其他命令,它應該仍然有效。