我必须解决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)时应该通过当前连接吗?
创建后是否应将所有模型添加到连接中?
对于此分离的数据库,建议使用哪种解决方案?