2012-04-27 8 views
0

mongoskinを使ってノードからmongodbに接続していますが、mongodbが利用できない場合に例外がスローされ、これを処理する方法が見つからないようです。mongodbが実行されていない場合、mongoskinによってスローされた例外をどのように処理できますか?

このような私の接続とクエリのコードを見...

var mongo = require('mongoskin'); 
var conn = 'localhost:27017/dbname'; 

mongo.db(conn).collection('collection').find({ date: { $gte: now } }, { sort: [['date', 1]]}).toArray(function(err, result) { 
       if (err) throw err; 
       callback(null, result) 
      }); 

私はこれをどのように対処すべきか?

おかげで、サイモン

答えて

2

throw err;はここに無用である - それは非同期関数としてイベントループによって呼び出されているので、エラーをキャッチするために何の外側のスコープはありません。 node.jsの規約では、最初のargにエラー(または存在しない場合はnull)が含まれ、2番目のargにコマンドの結果が含まれるコールバックを発生させます。

だからあなたはおそらくしたい:

callback(err, result) 

あるいは単に直接コールバックを渡します。コールバックのコードで、errがnullであるかどうかを確認し、そこで条件を処理します。

+0

ありがとう、これはスポットです!私はちょうどノードを学んでいて、どこかからこの行をコピーして貼り付けていました...私はエクスプレスが私のためにこれをキャッチして処理すると思っていましたが、今は理解しています。 – Simon