2012-08-01 95 views
1

我有一個工作站點node.js + Express + mongoose。我怎麼能知道mongodb是否由貓鼬開始?

我擔心MongoDB有可能會被意外關閉或者一開始就沒有啓動。

以下是代碼:

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

mongoose.connect('mongodb://localhost/Test'); 

var Student = mongoose.model('student', new Schema()); 

Student.find({...},function(err,docs){ 
     do sth 
}); 

依我之見,也不會有ERR消息時find中沒有蒙戈的情況。它被封鎖了。

我沒有在貓鼬中找到屬性來顯示連接狀態。

所以,任何人都知道我怎麼能知道在NodeJs中的mongodb的狀態?

+0

我找到了一個方法。當你啓動mongodb時,「http:// localhost:27017 /」將顯示成功。所以如果我想告訴nodejs中的狀態,我可以請求這個url,response.statusCode就是我想要的。 – EasonBlack 2012-08-01 05:38:42

+0

當你已經連接到數據庫時請求一個web url真的沒有意義(並且獲取它的成功並不意味着在查詢執行時服務器不會消失!)。您可以通過檢查「err」結果並處理異常來確認操作是否成功。 – Stennie 2012-08-01 07:55:11

回答

2

err參數是一個標準的Error object如果有任何異常(如數據庫連接不可用),將會設置該參數。您不需要檢查連接狀態..您需要檢查err並正確處理。

對於某些示例用法,應該閱讀introduction to MongoDB's node driver

另請參閱Error handling貓鼬。

+0

我知道,但是我在'mongoose 'db.open(function(err,db){})'中找不到這種函數。 如果mongodb死了,'find'方法就會阻塞線程,甚至不會執行回調函數(err,data)'。 – EasonBlack 2012-08-01 08:03:39

+1

我知道了,有'mongoose.connect()',我可以添加一個回調函數(err)來檢查連接狀態。 – EasonBlack 2012-08-01 08:12:54