Mongoose multiple connections

后端 未结 3 1649
别跟我提以往
别跟我提以往 2020-12-01 06:25

Currently I have this code for my connection mongoose.js:

var mongoose = require(\'mongoose\');
var uriUtil = require(\'mongodb-uri\');
var          


        
3条回答
  •  半阙折子戏
    2020-12-01 07:16

    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 (custom class)

    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' 
    });
    

提交回复
热议问题