2017-11-08 12 views
0

私にはCRUD systemがあります。これは私のcreate.jsファイルです。 db connectionを他のファイルで使用できるようにするには、各ファイル内の同じコードを書き換える必要はありません。複数のファイルにMondoDBをどのように接続するのですか

mongo = require('mongodb').MongoClient 
global.db = null 
sDatabasePath = 'mongodb://localhost:27017/kea' 
global.mongoId = require('mongodb').ObjectID 

/**************************************************/ 
mongo.connect(sDatabasePath, (err, db) => { 
    if (err) { 
     console.log('ERROR 003 -> Cannot connect to the database') 
     return false 
    } 
    global.db = db 
    console.log('OK 002 -> Connected to the database') 

    var jStudent = 
     { 
      "firstName": "Sarah", 
      "lastName": "Jepsen", 
      "age": 27, 
      "courses": [ 
       { 
        "courseName": "Web-development", 
        "teachers": [ 
         { 
          "firstName": "Santiago", 
          "lastName": "Donoso" 
         } 
        ] 
       }, 

       { 
        "courseName": "Databases", 
        "teachers": [ 
         { 
          "firstName": "Dany", 
          "lastName": "Kallas" 
         }, 
         { 
          "firstName": "Rune", 
          "lastName": "Lyng" 
         } 
        ] 
       }, 
       { 
        "courseName": "Interface-Design", 
        "teachers": [ 
         { 
          "firstName": "Roxana", 
          "lastName": "Stolniceanu" 
         } 
        ] 
       } 
      ] 
     } 

    global.db.collection('students').insertOne(jStudent, (err, result) => { 
     if (err) { 
      var jError = { "status": "error", "message": "ERROR -> create.js -> 001" } 
      console.log(jError) 
     } 
     var jOk = { "status": "ok", "message": "create.js -> saved -> 000" } 
     console.log(jOk) 
     console.log(JSON.stringify(result)) 
    }) 
}) 

原因これは自分自身では機能しません。それは言う:Cannot read property 'collection' of undefined、しかし私は再びサムコードを繰り返すしたくないです。 solutionとは何ですか?

global.db.collection('students').find({}, { "courses.courseName": true, _id: false }).toArray((err, result) => { 

    if (err) { 
     var jError = { "status": "error", "message": "ERROR -> student.js -> 001" } 
     console.log(jError) 
    } 
    var jOk = { "status": "ok", "message": "student.js -> all courses found -> 000" } 
    console.log(jOk) 
    console.log(JSON.stringify(result)) 
}) 
+0

グローバルには何が行われていますか? –

+0

私は変数をグローバルにしようとしましたが、それはそのようには機能しませんでした。 – codeDragon

答えて

0

それはMongoDBのために、そのコネクトを行います何app.js

var db = require('./server/models/mongodb'); 

を通じて全アプリが利用できるよう、コード

// External Modules 
// MongoDB connection 
var mongoose = require('mongoose'); 

var dbURI = '127.0.0.1:27017/kea'; 
mongoose.connect(dbURI); 

// CONNECTION EVENTS 
// When successfully connected 
mongoose.connection.on('connected', function() { 
    console.log('Mongoose default connection open to ' + dbURI); 
}); 

// If the connection throws an error 
mongoose.connection.on('error',function (err) { 
    console.log('Mongoose default connection error: ' + err); 
}); 

// When the connection is disconnected 
mongoose.connection.on('disconnected', function() { 
    console.log('Mongoose default connection disconnected'); 
}); 

// If the Node process ends, close the Mongoose connection 
process.on('SIGINT', function() { 
    mongoose.connection.close(function() { 
    console.log('Mongoose default connection disconnected through app 
    termination'); 
    process.exit(0); 
    }); 
}); 

の下に使用してMongoDBの接続用に別のファイルを作成します。アプリ起動時。これで、同じ接続コマンドをもう一度実行しなくても、アプリケーションのどこにでもmongodb接続を使用できます。

関連する問題