私がしようとしていることが可能かどうかわかりません。ネストされた参照によってリンクされたプロパティ値を表示する方法
ユーザースキーマ(モデル)を参照するコメントスキーマ(モデル)を参照する記事ドキュメントからデータを取得することによって、ユーザースキーマ(モデル)の 'name'プロパティの値を表示します。
'article'は 'user.name'値を保持する 'user'を参照する 'comment'を参照しています。
私のコントローラコードがIDデータにより、物品を取得し、「作者」を投入すると「コメント」フィールドにするには、次のようになります。
Article.findById(req.params.id)
.populate('author')
.populate('comments')
.exec(function(err, article){
if(err){
return req.flash('error', 'Unable to display article.');
} else {
res.render('articles/show', {
article: article
});
}
});
記事のマイ・スキーマ(モデル)は、このようなコメント 'プロパティが含まれています。
...
comments: [
{
type: Schema.Types.ObjectId,
ref: "Comment"
}
],
...
私のコメントスキーマ(モデル)は、このような '著者' プロパティが含まれています
...
text: String,
author:
{
type: Schema.Types.ObjectId,
ref: "User"
},
...
ユーザースキーマ(モデル)には、自分のビュー(EJS)に表示する値を保持する 'name'プロパティがあります。
私はそれを表示する方法を見つけることができませんでした。なぜなら、私は別のクエリなしでそれを行うことができないからかもしれません。
私は 'article.comments'配列をループし、<%= comment.text %>
というコメントテキストを正常に表示しますが、コメントスキーマで参照される 'user'スキーマ(モデル)から 'name'プロパティを表示する方法を見つけることができません(モデル)。
私のエラーについての洞察はありがたいです。
ありがとうMikey。 "comment.author"で参照されているユーザスキーマのプロパティではなく、 'comment.text'と' comment._id'を表示できます。 – JimB814