2017-10-03 5 views
0

私のアプリでは、mongodb接続に提供したデータベース名の監視だけで問題が発生していました。周りを見ながら私はここで例に出会っ:ノードエクスプレスMongodb接続の構文とエラー処理

https://wesleytsai.io/2015/08/02/mongodb-connection-pooling-in-nodejs/ 

だから私の質問私はMongoDBの接続には存在しないデータベースを提供していた場合、エラーのいずれかの種類が投げ取得しない理由はありますか?私はちょうど以下の構文を解釈/理解する助けが必要です。この行には、

MongoClient.connect(mongoUrl, function(err, database) { 
    if(err) throw err; 
. 
. 
. 

データベースが存在しない場合、mongoは接続できないため、エラーは発生しませんか?

私がやろうとしているのは、データベースが存在しないという事実にもフラグを立てることができる何らかのエラー処理をセットアップすることです。コレクションも同様に存在しない場合は( 'expenses'は 'test' )。 MongoDBので

var mongodb = require('mongodb'); 
var MongoClient = mongodb.MongoClient; 
var mongoUrl = 'mongodb://127.0.0.1:27017/expenses'; 
var db; 

exports.connect = function(callback) { 
    MongoClient.connect(mongoUrl, function(err, database) { 
    if(err) throw err; 
    db = database; 
    callback(); 
    }) 
} 
+0

あなたは、システム内の罰金をあなたのmongodを開始した場合。そして、あなたがmlab経由で接続している場合は、リンクを提供する必要があります。あなたはこれらのことをしていますか? –

答えて

0

、あなたはdatbaseに接続され、その後、あなたは関係なく、そのコレクションが存在しているか否か、MongoDBのはあなたのためのコレクションを作成しているという事実を、その後、あなたが定義されたコレクションにスキーマを提供する場合。例えば

次のコードを持っている場合、ユーザーの名前

module.exports = mongoose.model('User', schema); 

コレクションがデータベースに作成されます。あなたがコレクションを持っていなくても、mongodbはコレクションを作成します。

データベースはその後、以下のように続く存在するかどうかを確認したい場合は、次の

var mongoose = require('mongoose') 
    , Admin = mongoose.mongo.Admin; 

/// create a connection to ypur database 
var connection = mongoose.createConnection(
    'mongodb://user:[email protected]:port/your_database'); 
connection.on('open', function() { 
    // connection successful 
    new Admin(connection.db).listDatabases(function(err, result) { 
     console.log('listDatabases successful'); 
     // the database lists are stored in result.databases 
     var allDatabases = result.databases; 
     // allDatabases contains the record of all the databases 
     // crosscheck this list with the database you want 
    }); 
}); 
+0

はい、私は、mongodbがシェルでそのように機能していることを認識しています。しかし、私の質問は、私が接続しようとしているデータベースが存在しないという事実にフラグを立てる方法です。私の場合、これは安らかなAPIの文脈の中にあった。私はどこのデータでもエラーはまったく得られませんでした。私はちょうどこれを処理する方法を探したいので、将来、データベースが接続されていないことを知ることができます。 –

+0

上記の編集されたコンテンツは、その接続のデータベースのすべてのリストを含む結果を提供します。あなたが将来の問題を避けることができるように、あなたが望むものとクロスチェックしてください。 –

関連する問題