クエリー時の関係テーブルのフィールドの除外
5644 ワード
上記のように、usersテーブルとpostsテーブル、およびそれらの関係テーブルlikeを例に挙げます.
表ユーザのモデルが およびその両方の関係テーブルには、ユーザーと投稿との関係が Aliasを使用すると、ユーザーとPostの追加関係を表現できます.
折りたたみテーブルlikeを作成する場合,ユーザとPostはそれぞれ
次の図に示すように、文章で好きなユーザー情報をクエリーします.
USER
表投稿のモデルがPOST
である場合,両者の関係は1대다
である.다대다
である「like」テーブルがあります.折りたたみテーブルlikeを作成する場合,ユーザとPostはそれぞれ
Liker
,Liked
のaliasで表される.次の図に示すように、文章で好きなユーザー情報をクエリーします.
const post = await Post.findOne({
where: { postKey, isDeleted: false },
{
model: User,
as: 'Liker',
attributes: ['id'],
}
]
})
この結果は、次の情報をクエリーします.{
// ... post 컬럼정보들
"Liker": [
{
"id": 1,
"likes": {
"createdAt": "2021-06-12T06:33:52.000Z",
"updatedAt": "2021-06-12T06:33:52.000Z",
"postId": 1,
"userId": 1
}
}
]
}
likeテーブルの情報が不要な場合は、これらの情報を除外するには、次のようにクエリーする必要があります.const post = await Post.findOne({
where: { postKey, isDeleted: false },
{
model: User,
as: 'Liker',
attributes: ['id'],
through: {
attributes: []
}
}
]
})
この結果はlikeテーブルのカラム情報を除外します.以下に示します.//결과
{
//...post 컬럼정보 etc
"Liker": [
{
"id": 1
}
]
}
Reference
この問題について(クエリー時の関係テーブルのフィールドの除外), 我々は、より多くの情報をここで見つけました https://velog.io/@broccoliindb/조회시-관계테이블의-필드제외하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol