首页 > 解决方案 > 如何有条件地选择 NoSQL 数据库?

问题描述

我有一个与 MongoDB 数据库连接的应用程序。应用程序正在解析外部数据并将这些数据放入数据库。现在我有不同的 3 个产品数据源(比如说和) vegetables,我想将产品数据放到单独的数据库中。fruitsbeverages

app.js是这样解析数据的:

const Product = require('./models/product');
...
let product = await Product.findOneAndUpdate({ SKU }, $set: data);
...

我想在 app.js 级别的某个地方定义将选择哪个数据库,即基于脚本参数。

现在我现在model.js看起来像这样:

const mongoose = require('../db/mongodb');

const ProductSchema = new mongoose.Schema({
    SKU: {
        type: String,
        required: true,
        unique: true
    },
    name: {
        ES: { type: String },
        FR: { type: String },
        EN: { type: String },
        DE: { type: String },
        IT: { type: String },
    },
    description: {
        ES: { type: String },
        FR: { type: String },
        EN: { type: String },
        DE: { type: String },
        IT: { type: String },
    }
});

module.exports = mongoose.model('Product', ProductSchema);

我的mongodb.js

const mongoose = require('mongoose');

let mongoDB = 'mongodb+srv://user:pass@url/database1';


mongoose.connect(mongoDB, {
    useCreateIndex: true,
    useNewUrlParser: true,
    useUnifiedTopology: true
});

mongoose.set('useFindAndModify', false);

let db = mongoose.connection;
db.on('error', console.error.bind(console, 'MongoDB connection error:'));

module.exports = mongoose;

到数据库的链接是硬编码在require文件中的mongodb.js。有条件地选择mongoDB链接的最佳选择是app.js什么?

标签: node.jsmongodbmongoose

解决方案


只创建多个连接会更容易、更正确,不是吗?

const mongoose = require('mongoose')
const conn = mongoose.createConnection('mongodb+srv://user:pass@url/database1');
const conn2 = mongoose.createConnection('mongodb+srv://user:pass@url/database2');

推荐阅读