node.js - Mongoose 和 NodeJS 中的多个数据库使用相同的引用文件架构

标签 node.js mongodb mongoose

我正在构建一个 Web 应用程序,我希望将其与基于 GET 查询的两个数据库一起使用。这两个数据库具有相同的架构,唯一的区别是一个具有实时数据,另一个是清理(或测试)数据。

这工作正常,但我想知道这是否是解决此问题的正确方法。

我正在引用一个具有架构的模型:names_model.js

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var namesSchema = new Schema({
name: String,
createdAt: String
});

module.exports = mongoose.model('names', namesSchema);

这是我的主文件。如果参数查询为1,它将连接到第一个数据库,否则它将连接到第二个数据库。

var mongoose = require('mongoose');

var db = mongoose.createConnection('mongodb://localhost/database1');
var db2 = db.useDb('database2');
var NamesDB = require('./names_model.js');

var Connect = db.model('names', NamesDB);
var Connect2 = db2.model('names', NamesDB);

exports.getData = function(dbName, sendBack) {

    console.log(dbName);
    if (dbName == 1) {
        var Names = Connect;
    }
    else {
        Names = Connect2;
    }

    Names.find({}, function (err, docs) {
        if (err) {
            console.log(err)
        }
        else {
            sendBack(docs);
        }
    });
};

就像我上面提到的,这确实有效,尽管我觉得我可能会为自己采取额外的步骤,但我不太确定。我希望有人能够告诉我是否有更简单的方法。

谢谢!

最佳答案

您可以使用环境变量来定义您是在“实时/生产”站点还是开发站点。

在系统中定义一个环境变量,通常是 NODE_ENV=<env-name>然后在 process.env.NODE_ENV 上使用条件定义每个环境要使用的内容:

var dbName;

if (process.env.NODE_ENV === 'development') {
    // Define the development db
    dbName = 'database1';
 } else if (process.env.NODE_ENV === 'production') {
    // Define the production db
    dbName = 'database2';
 }

 var db = mongoose.createConnection('mongodb://localhost/' + dbName);
 var NamesDB = require('./names_model.js');

 var Connect = db.model('names', NamesDB);

关于node.js - Mongoose 和 NodeJS 中的多个数据库使用相同的引用文件架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34616772/

相关文章:

node.js - Mongoose如何连接多个数据库

javascript - Node.js 和 Express 中的 app.get() 第三个参数

javascript - 处理字符串中相同出现的字符

php - 找不到合适的服务器 (`serverSelectionTryOnce` set) : [connection timeout calling ismaster on '10.0.0.106:27017' ]

MongoDB:如何在聚合上应用多个 $project

MongoDB 故意仅返回没有匹配 $lookup 结果的用户

javascript - Mongoose 返回 Mongo 对象,但无法访问其属性

mysql - wordpress 和 node.js

node.js - 异常地方Node.JS异步错误的合理处理方案

ruby - 我如何找出实际插入了多少 Mongo 文档?