반응형
다중 연결 몽구스
현재 저는 제 연결 몽구스에 대한 이 코드를 가지고 있습니다.js:
var mongoose = require('mongoose');
var uriUtil = require('mongodb-uri');
var mongodbUri = 'mongodb://localhost/db_name';
var mongooseUri = uriUtil.formatMongoose(mongodbUri);
mongoose.connect(mongooseUri);
module.exports = mongoose;
연결이 필요한 파일은 test.js:
var mongoose = require('../model/mongoose');
var schema = mongoose.Schema({...});
mongoose.createConnection(...) 함수를 사용하여 여러 연결을 사용하도록 mongoose.js를 업데이트하려면 어떻게 해야 합니까?
다음과 같은 변경을 수행할 때는 하나의 연결에 대해서만 변경을 시작합니다.
var mongoose = require('mongoose');
mongoose.createConnection('mongodb://localhost/db_name');
mongoose.open('localhost');
module.exports = mongoose;
정의되지 않은 것은 함수가 아닙니다.이 코드를 사용하는 경우:
var mongoose = require('mongoose');
db = mongoose.createConnection('mongodb://localhost/db_name');
db.open('localhost');
module.exports = mongoose;
"오류:닫히지 않은 연결을 열려고 시도하는 중"
조언이 있습니까?
연결 풀 http://mongoosejs.com/docs/connections.html 을 통한 Mongoose 처리 연결
사용할 수 있습니다.server: {poolSize: 5}
증가/감소 풀 옵션(병렬 연결 수)
다른 데이터베이스에 대한 연결이 필요하면 여기에서 Mongoose 및 단일 node.js 프로젝트의 여러 데이터베이스를 확인하십시오.
다중 연결의 예:
var mongoose = require('mongoose')
var conn = mongoose.createConnection('mongodb://localhost/db1');
var conn2 = mongoose.createConnection('mongodb://localhost/db2');
var Schema = new mongoose.Schema({})
var model1 = conn.model('User', Schema);
var model2 = conn2.model('Item', Schema);
model1.find({}, function() {
console.log("this will print out last");
});
model2.find({}, function() {
console.log("this will print out first");
});
알겠습니다. 귀하의 사례를 통해 저는 제 요구에 맞는 솔루션을 찾았습니다.
몽구스제이에스
var mongoose = require('mongoose');
mongoose.main_conn = mongoose.createConnection('mongodb://localhost/main');
mongoose.admin_conn = mongoose.createConnection('mongodb://localhost/admin');
module.exports = mongoose;
content.js
var mongoose = require('../model/mongoose');
var schema = mongoose.Schema({...});
/// functions here
schema.statics.func_a(){...};
schema.statics.func_b(){...};
// And finaly updated only one line
//exports.Content = mongoose.model('Content', schema);
exports.Content = mongoose.main_conn.model('Content', schema);
유일한 것은 연결 개체를 mongoose 개체에 추가해도 괜찮거나 더 우아한 솔루션이 있을 수 있다는 것입니다.
config.js
module.exports = {
default: 'main',
main: 'mongodb://localhost/main',
admin: 'mongodb://localhost/admin',
};
connection.js
const mongoose = require('mongoose');
const config = require('./config');
mongoose.Promise = global.Promise;
function createConnection(name) {
return mongoose.createConnection(config[name]);
}
module.exports = createConnection(config[config.default]);
module.exports.on = createConnection;
model.js(사용자 지정 클래스)
const connection = require('./connection');
class Model {
constructor(name, data) {
this.data = data;
return this.connection().model(name, data.schema);
}
connection() {
if (this.data.connection) {
return connection.on(this.data.connection);
}
return connection;
}
}
module.exports = Model;
user.js
const Schema = require('mongoose').Schema;
const conn = require('./connection');
const Model = require('./model');
const userSchema = new Schema({
name: String,
email: String,
password: String
});
// USING MONGOOSE MODEL
// default connection
const UserM1 = conn.model('User', userSchema);
// admin connection
const UserM2 = conn.on('admin').model('User', userSchema);
// USING CUSTOM MODEL
// default connection
const UserC1 = new Model('User', {
schema: userSchema
});
// admin connection
const UserC2 = new Model('User', {
schema: userSchema,
connection: 'admin'
});
언급URL : https://stackoverflow.com/questions/32906467/mongoose-multiple-connections
반응형
'programing' 카테고리의 다른 글
도커 이미지를 빌드할 때 이미 설치된 경우 유형 스크립트를 설치하라는 메시지가 표시됨 (0) | 2023.07.10 |
---|---|
DB에 동일한 이름의 제약 조건이 있을 수 있습니까? (0) | 2023.07.10 |
범위의 MariaDB/MySQL 조인 테이블 (0) | 2023.07.10 |
상대 가상 경로 "는 여기서 허용되지 않습니다. (0) | 2023.07.05 |
유형 스크립트 반응에서 구성 요소의 하위 항목을 반복하는 방법은 무엇입니까? (0) | 2023.07.05 |