복붙노트

[MONGODB] 몽구스 단일 Node.js를 프로젝트에서 여러 데이터베이스

MONGODB

몽구스 단일 Node.js를 프로젝트에서 여러 데이터베이스

나는 서브 프로젝트를 포함하는 Node.js를 프로젝트를하고 있어요. 하나 개의 서브 프로젝트는 하나의 MongoDB의 데이터베이스가되고 몽구스는 포장 및 DB를 쿼리에 사용됩니다. 그러나 문제는

내가 알고 싶은 몽구스 또는이 문제에 대한 해결 방법과 여러 데이터베이스를 사용하는 어쨌든 무엇입니까? 내가 생각하기 때문에 몽구스는 매우 쉽고 빠릅니다. 또는 권고 등의 다른 모듈?

해결법

  1. ==============================

    1.당신이 할 수있는 한 가지는 각 프로젝트에 대한 하위 폴더가있을 수있다. 그래서, 그 하위 폴더에 몽구스를 설치하고 각 하위 애플리케이션에서 자신의 폴더에서 () 몽구스가 필요합니다. 아니 프로젝트 루트에서 또는 세계에서. 하나 개의 서브 프로젝트, 하나 개 몽구스 설치 한 몽구스 인스턴스 그래서.

    당신이 할 수있는 한 가지는 각 프로젝트에 대한 하위 폴더가있을 수있다. 그래서, 그 하위 폴더에 몽구스를 설치하고 각 하위 애플리케이션에서 자신의 폴더에서 () 몽구스가 필요합니다. 아니 프로젝트 루트에서 또는 세계에서. 하나 개의 서브 프로젝트, 하나 개 몽구스 설치 한 몽구스 인스턴스 그래서.

    -app_root/
    --foo_app/
    ---db_access.js
    ---foo_db_connect.js
    ---node_modules/
    ----mongoose/
    --bar_app/
    ---db_access.js
    ---bar_db_connect.js
    ---node_modules/
    ----mongoose/
    

    foo_db_connect.js에서

    var mongoose = require('mongoose');
    mongoose.connect('mongodb://localhost/foo_db');
    module.exports = exports = mongoose;
    

    bar_db_connect.js에서

    var mongoose = require('mongoose');
    mongoose.connect('mongodb://localhost/bar_db');
    module.exports = exports = mongoose;
    

    db_access.js 파일에서

    var mongoose = require("./foo_db_connect.js"); // bar_db_connect.js for bar app
    

    지금, 당신은 몽구스 여러 데이터베이스에 액세스 할 수 있습니다.

  2. ==============================

    2.미세 설명서에 따르면, createConnection ()는 여러 데이터베이스에 연결하는 데 사용할 수 있습니다.

    미세 설명서에 따르면, createConnection ()는 여러 데이터베이스에 연결하는 데 사용할 수 있습니다.

    그러나 각 연결 / 데이터베이스에 대한 별도의 모델을 만들어야합니다 :

    var conn      = mongoose.createConnection('mongodb://localhost/testA');
    var conn2     = mongoose.createConnection('mongodb://localhost/testB');
    
    // stored in 'testA' database
    var ModelA    = conn.model('Model', new mongoose.Schema({
      title : { type : String, default : 'model in testA database' }
    }));
    
    // stored in 'testB' database
    var ModelB    = conn2.model('Model', new mongoose.Schema({
      title : { type : String, default : 'model in testB database' }
    }));
    

    난 당신이 그들 사이 스키마를 공유 할 수 있다는 확신 해요,하지만 당신은 확인하기 위해 확인해야합니다.

  3. ==============================

    3.다른 방법으로, 몽구스는 기본 인스턴스의 새 인스턴스의 생성자를 수출한다. 그래서 이런 일이 가능합니다.

    다른 방법으로, 몽구스는 기본 인스턴스의 새 인스턴스의 생성자를 수출한다. 그래서 이런 일이 가능합니다.

    var Mongoose = require('mongoose').Mongoose;
    
    var instance1 = new Mongoose();
    instance1.connect('foo');
    
    var instance2 = new Mongoose();
    instance2.connect('bar');
    

    별도의 데이터 소스로 작업하는 경우, 또한 각 사용자 또는 요청에 대한 별도의 데이터베이스 컨텍스트를 할 때 매우 유용합니다. 이 일을 할 때 연결을 많이 만들 수 있습니다대로, 조심해야합니다. 각 인스턴스에 의해 생성 된 풀 크기를 제한하는 것이 인스턴스가 필요하지 않을 때) (분리 호출하고 있는지 확인하십시오.

  4. ==============================

    4.꽤 늦었지만이 힘 도움말 사람. 현재의 대답은 당신이 당신의 연결 및 모델 같은 파일을 사용하는 가정합니다.

    꽤 늦었지만이 힘 도움말 사람. 현재의 대답은 당신이 당신의 연결 및 모델 같은 파일을 사용하는 가정합니다.

    실제 생활에서 다른 파일로 모델을 분할하는 가능성이 큽니다. 당신은 당신의 기본 파일이 같은 것을 사용할 수 있습니다 :

    mongoose.connect('mongodb://localhost/default');
    
    const db = mongoose.connection;
    
    db.on('error', console.error.bind(console, 'connection error:'));
    db.once('open', () => {
      console.log('connected');
    });
    

    이는 그것이 문서에 설명되어 얼마나입니다. 그리고 모델 파일에 다음과 같은 작업을 수행합니다

    import mongoose, { Schema } from 'mongoose';
    
    const userInfoSchema = new Schema({
      createdAt: {
        type: Date,
        required: true,
        default: new Date(),
      },
      // ...other fields
    });
    
    const myDB = mongoose.connection.useDb('myDB');
    
    const UserInfo = myDB.model('userInfo', userInfoSchema);
    
    export default UserInfo;
    

    어디 MYDB은 데이터베이스 이름입니다.

  5. from https://stackoverflow.com/questions/19474712/mongoose-and-multiple-database-in-single-node-js-project by cc-by-sa and MIT license