数据库连接/用户,mongodb,nodejs

时间:2018-10-11 16:23:00

标签: node.js mongodb mongoose

我必须解决nodejs和mongoose中的多数据库连接问题。

每个用户都有自己的数据库,并且请求包含用户数据库的唯一标识符。这意味着我必须更改数据库的每个请求,或者必须创建并关闭新的连接。

但是问题是,如果我更改可重用的数据库连接,它将在全局范围内更改,并且同一时间的其他请求数据将保存在同一数据库中。这意味着我必须在中间件中创建用户自己的猫鼬连接,并将其存储在当前请求数据中。

app.get('/', async function (req, res) {

    ....
    req.userinfo.connection = mongoose.connect('mongodb://localhost/' + userdata.databasename,{ useNewUrlParser: true });

});

没关系,我可以在控制器中访问请求数据:

...
let BS = require('./model');
let bs = new BS({
   BusinessName: 'Hello'
});
await bs.save();

但是问题来了,我将模型放在单独的文件中,这需要猫鼬,这意味着在连接中创建新模型后,我无法更改模型数据库...

这是我的模特:

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

let BusinessProfileSchema = new Schema({
  BusinessName: {type: String, required: true},
}, {
  collection: 'BusinessProfile'
});

let BusinessProfile = mongoose.model('BusinessProfile', BusinessProfileSchema);
module.exports = BusinessProfile;

在模型文件中,我无法访问请求数据。

是的,我在这里看到了多个猫鼬连接的解决方案,但它不是分开的...

我应该创建自己的模型函数来创建带有科伦特猫鼬连接的模型吗?

当我需要模型require('./ model')(connection)时应该通过当前连接吗?

创建后是否应将所有模型添加到连接中?

对于此分离的数据库,建议使用哪种解决方案?

0 个答案:

没有答案