私は MEAN スタック上でかなり単純なアプリケーションを構築していますが、特にマングースに関しては、本当に深みがありません。私は、マングースのドキュメントを理解するのが非常に難しく、他のどこにも答えが見つからないことに気づきました。
私の問題はこれです: 私にはたくさんのユーザーがいて、これらのユーザーにはリポジトリがあり、リポジトリにはリポジトリプロバイダー (GitHub、BitBucket など) があります。
ユーザーには多くのリポジトリがあり、リポジトリには 1 つのリポジトリ タイプがあります。
私のユーザーファイルには以下が含まれています:
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;
mongo でユーザー ドキュメントを作成し、(既存の repoType ドキュメントから取得した) repoType id ハッシュを手動で割り当てています。
ユーザーを console.log すると、レポ タイプは ID に設定されますが、関係は返されません。
[ { _id: 5547433d322e0296a3c53a16,
email: 'john@smith.com',
name: 'John Smith',
__v: 0,
repositories:
[ { name: 'RepoOne',
repoType: 5547220cdd7eeb928659f3b8,
_id: 5547433d322e0296a3c53a17,
branches: [Object] } ] } ]
この関係を適切に設定してクエリするにはどうすればよいですか?