database.js
1.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
var mongoose = require('mongoose');
var db_url = 'mongodb+srv://oss:12341234@cluster0.us5lm.mongodb.net/?retryWrites=true&w=majority';
// database 객체에 db, schema, model 모두 추가
var database = {};
// 초기화를 위해 호출하는 함수
database.init = function(app, config) {
connect(app, config);
}
//데이터베이스에 연결하고 응답 객체의 속성으로 db 객체 추가
function connect(app, config) {
// 데이터베이스 연결 : config의 설정 사용
mongoose.Promise = global.Promise; // mongoose의 Promise 객체는 global의 Promise 객체 사용하도록 함
mongoose.connect(db_url);
database.db = mongoose.connection;
database.db.on('error', console.error.bind(console, 'mongoose connection error.'));
database.db.on('open', function () {
console.log('데이터베이스에 연결되었습니다. : ' + db_url);
// config에 등록된 스키마 및 모델 객체 생성
createSchema(app, config);
});
database.db.on('disconnected', connect);
}
// config에 정의된 스키마 및 모델 객체 생성
function createSchema(app, config) {
var schemaLen = config.db_schemas.length;
for (var i = 0; i < schemaLen; i++) {
var curItem = config.db_schemas[i];
// 모듈 파일에서 모듈 불러온 후 createSchema() 함수 호출하기
var curSchema = require(curItem.file).createSchema(mongoose);
// User 모델 정의
var curModel = mongoose.model(curItem.collection, curSchema);
// database 객체에 속성으로 추가
database[curItem.schemaName] = curSchema;
database[curItem.modelName] = curModel;
}
app.set('database', database);
}
// database 객체를 module.exports에 할당
module.exports = database;