>  Q&A  >  본문

제목은 다음과 같이 다시 작성됩니다. Sequelize를 사용하여 관련 테이블의 행 수 계산

<p>sequelize와 mySQL을 사용하면 <code>User</code>와 <code>Post</code>라는 두 개의 테이블이 있습니다. </p> <p>두 테이블 사이의 관계는 <code>M:N</code></p>입니다. <pre class="brush:php;toolbar:false;">db.User.belongsToMany(db.Post, { through: "좋아요", as: "좋아요" }); db.Post.belongsToMany(db.User, { through: "좋아요", as: "좋아요" });</pre> <p>내가 원하는 것은 게시물의 모든 좋아요 ID와 좋아요 수를 얻는 것입니다. </p> <p>이렇게 <code>모든 좋아요</code>를 얻을 수 있다는 것을 알고 있습니다. </p> <pre class="brush:php;toolbar:false;">const post = Post.findOne({ 위치: { ID: postId }, 속성: ["id", "title", "imageUrl"], 포함하다: [{ 모델: 사용자, 다음과 같이: "좋아요 사용자", 속성: ["id"], 통해: { 속성: [] }, }] }) // 결과 { "ID": 36, "제목": "테스트", "imageUrl": "하늘이_1644886996449.jpg", "좋아요 표시자": [ { "ID": 13 }, { "ID": 16 } ] }</pre> <p>또한 이 방법으로 <code>좋아요 수</code>를 얻을 수 있다는 것도 알고 있습니다. </p> <pre class="brush:php;toolbar:false;">const post = Post.findOne({ 위치: { ID: postId }, 속성: ["id", "title", "imageUrl"], 포함하다: [{ 모델: 사용자, 다음과 같이: "좋아요 사용자", 속성: [[sequelize.fn("COUNT", "id"), "likersCount"]], }] }) // 결과 { "ID": 36, "제목": "테스트", "imageUrl": "하늘이_1644886996449.jpg", "좋아요 표시자": [ { "likersCount": 2 } ] }</pre> <p>그런데 두 가지를 동시에 얻는 방법을 모르겠습니다. 두 가지를 모두 사용할 때 결과를 확인하십시오. </p> <pre class="brush:php;toolbar:false;">{ 모델: 사용자, 다음과 같이: "좋아요 사용자", 속성: ["id", [sequelize.fn("COUNT", "id"), "likersCount"]], 통해: { 속성: [] }, } // 결과 "좋아요 표시자": [ { "ID": 13, "likersCount": 2 } ]</pre> <p>좋아요가 한 명만 표시됩니다(ID: 13). 다른 좋아요(ID: 16)가 표시되어야 합니다. </p> <p>문제가 무엇인가요? </p>
P粉792026467P粉792026467419일 전362

모든 응답(1)나는 대답할 것이다

  • P粉193307465

    P粉1933074652023-08-28 11:56:53

    COUNT은 레코드를 그룹화하여 집계하는 집계 함수이므로 하나만 표시됩니다. 따라서 두 가지를 모두 얻는 유일한 방법은 하위 쿼리를 사용하여 조인 테이블의 레코드 수를 계산하고 동시에 M:N 관계의 반대편에 있는 레코드를 가져오는 것입니다.

    으아악

    회신하다
    0
  • 취소회신하다