Der Titel wird wie folgt umgeschrieben: Verwenden Sie Sequelize, um die Anzahl der Zeilen in zugehörigen Tabellen zu zählen
<p>Mit sequelize und mySQL habe ich zwei Tabellen: <code>User</code> und <code>Post</code>. </p>
<p>Die Beziehung zwischen den beiden Tabellen ist <code>M:N</code></p>
<pre class="brush:php;toolbar:false;">db.User.belongsToMany(db.Post, { through: "Likes", as: "Liked" });
db.Post.belongsToMany(db.User, { through: „Likes“, as: „Likers“ });</pre>
<p>Ich möchte alle Liker-IDs und die Anzahl der Liker des Beitrags erhalten. </p>
<p>Ich weiß, dass man <code>alle Liker</code> erhalten kann. </p>
<pre class="brush:php;toolbar:false;">const post = waiting Post.findOne({
wobei: { id: postId },
Attribute: ["id", "title", "imageUrl"],
enthalten: [{
Modell: Benutzer,
als: „Liker“,
Attribute: ["id"],
durch: { Attribute: [] },
}]
})
// Ergebnis
{
"id": 36,
„Titel“: „Test“,
„imageUrl“: „하늘이_1644886996449.jpg“,
„Gefällt mir“: [
{
„id“: 13
},
{
„id“: 16
}
]
}</pre>
<p>Außerdem weiß ich, dass ich auf diese Weise die <code>Anzahl der Likes</code> erhalten kann. </p>
<pre class="brush:php;toolbar:false;">const post = waiting Post.findOne({
wobei: { id: postId },
Attribute: ["id", "title", "imageUrl"],
enthalten: [{
Modell: Benutzer,
als: „Liker“,
Attribute: [[sequelize.fn("COUNT", "id"), "likersCount"]],
}]
})
// Ergebnis
{
"id": 36,
„Titel“: „Test“,
„imageUrl“: „하늘이_1644886996449.jpg“,
„Gefällt mir“: [
{
„likersCount“: 2
}
]
}</pre>
<p>Allerdings weiß ich nicht, wie ich beide gleichzeitig bekommen kann.
Überprüfen Sie die Ergebnisse, wenn ich beide verwende. </p>
<pre class="brush:php;toolbar:false;">{
Modell: Benutzer,
als: „Liker“,
Attribute: ["id", [sequelize.fn("COUNT", "id"), "likersCount"]],
durch: { Attribute: [] },
}
// Ergebnis
„Gefällt mir“: [
{
"id": 13,
„likersCount“: 2
}
]</pre>
<p>Es wird nur ein Liker angezeigt (ID: 13)
Es sollte ein weiterer Liker angezeigt werden (ID: 16). </p>
<p>Was ist das Problem? </p>