0
我在MEAN堆棧上構建了一個相當簡單的應用程序,而且我真的超出了我的深度,尤其是涉及貓鼬的時候。我發現貓鼬的文件很難纏繞我的頭,無法在其他地方找到答案。我的問題是這樣的:我有一堆用戶,這些用戶有倉庫,倉庫有倉庫提供者(GitHub,BitBucket等)。Mongoose'populate'not populating
用戶擁有多個存儲庫並且存儲庫具有一個存儲庫類型。
我的用戶文件包含以下內容:
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var UserSchema = new Schema({
name: {
type: String,
required: true
},
email: {
type: String,
required: true
},
repositories: [{
name: String,
branches: [{
name: String,
head: Boolean,
commits: [{
hash: String,
date: Date,
message: String,
contributer: String,
avatar: String
}]
}],
repoType: {
type: Schema.Types.ObjectId,
ref: 'RepoProviders'
}
}]
});
var User = mongoose.model('User', UserSchema);
module.exports = User;
// This is where the magic doesn't happen :(
User.find({ name: "John Smith"}).populate({path: 'repoType'}).exec(function (err, user) {
if (err) return handleError(err);
console.log(user);
});
RepoProvider.js包含:
var mongoose = require('mongoose');
Schema = mongoose.Schema;
var RepoProviderSchema = new Schema({
name: {
type: String,
required: true
}
});
var RepoProvider = mongoose.model('RepoProviders', RepoProviderSchema);
module.exports = RepoProvider;
我創造了蒙戈用戶文檔和手動分配repoType ID散(從現有的repoType採取文件)。
當我CONSOLE.LOG用戶,回購類型設置爲ID,但沒有關係返回:
[ { _id: 5547433d322e0296a3c53a16,
email: '[email protected]',
name: 'John Smith',
__v: 0,
repositories:
[ { name: 'RepoOne',
repoType: 5547220cdd7eeb928659f3b8,
_id: 5547433d322e0296a3c53a17,
branches: [Object] } ] } ]
如何正確設置和查詢這種關係?
哦,夥計......你知道多久,我都花在這個?結果就是這個! Ugggh ...我準備好運行回PHP的尖叫。非常感謝您的幫助! – nickspiel
:D Mongoose可能會對稀疏文檔有點混淆,但最近項目已經過渡,新的維護人員正在努力解決這個問題(還有很多其他事情)。 –
啊好消息!通過完整的示例來獲得簡單的「入門指南」確實會有所幫助,但這些都不足以填補目前文檔中出現的空白廢話。 – nickspiel