例如,我有 SchemaA 和 SchemaB,它们都属于不同的数据库。在 SchemaA 中,我有 doc.b = {type: mongoose.Schema.Types.ObjectId, ref: 'SchemaB'}
。当我填充这个时,我遇到了以下错误。 MissingSchemaError:尚未为模型“SchemaB”注册架构。使用 mongoose.model(name, schema)
从我的研究中,我了解到 mongoose 支持人口跨数据库。
我需要为每个模式多次使用 mongoose,这是问题所在吗?
基本上我需要的是两个不同的模式,它们连接到不同的数据库以与填充一起工作。如果我在 mongoose 创建的连接上注册模式,它们将不会在同一个列表中注册。有没有办法成功呢?
最佳答案
基本上我们需要做的是将模式传递给人口,就像这样:
User.findOne({
_id: req.user._id
}).populate({
path: 'roomsContainer',
model: RoomsContainer,
populate: [{
path: 'creator'
},{
path: 'users'
},{
path: 'rooms',
model: Room
}]
}).exec(function(err, user) {
// do some magic
});
其中User
属于数据库一,Room
,RoomsContainer
属于数据库二。
关于node.js - Mongoose 从不同的数据库填充模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36962294/