2016-05-01 70 views
2

例如,我有SchemaA和SchemaB,它們都屬於不同的數據庫。裏面SchemaA我有doc.b = {type: mongoose.Schema.Types.ObjectId, ref: 'SchemaB'}。當我正在填充這個我得到錯誤。 MissingSchemaError: Schema hasn't been registered for model "SchemaB". Use mongoose.model(name, schema)從我的研究中,我已閱讀貓鼬支持人口跨數據庫。
我要求貓鼬多次爲每個模式,是這個問題?
基本上我需要的是連接到不同數據庫以與填充一起工作的兩種不同模式。如果我在由貓鼬創建的連接上註冊模式,它們將不會被註冊在同一個列表中。如果有成功的方法呢?來自不同數據庫的貓鼬填充模式

+0

我在Mongoose的github頁面發現了這個[示例](https://github.com/Automattic/mongoose/issues/3639#issuecomment-161785989)。它向您展示瞭如何從另一個數據庫中的數據填充一個數據庫中的模型。 –

+0

這個exmaple正在工作。 –

+0

我把所有的模式放在不同的文件中,像例子中那樣連接,但是拋出這個錯誤。 –

回答

0

基本上,我們需要做的是通過架構人口,這樣的事情:

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屬於數據庫之一,RoomRoomsContainer屬於數據庫中的兩個。