Estoy tratando de modificar una consulta para que también devuelva un recuento de elementos. Quiero contar el número de "Comentarios de publicación" que se relacionan con una "Publicación". En este momento la consulta se ve así:
let query = { attributes: { exclude: attributesToExclude, }, where: { 'club_id': this.id, }, order: [['date', 'DESC']], include: [ { model: models.PublicationComment, association: models.Publication.hasMany(models.PublicationComment, { as: 'lastComments' }), order: [['date', 'DESC']], limit: 3, include: [ { model: models.User, as: 'user', attributes: { exclude: attributesToExclude, }, } ], }, { model: models.PublicationLike, association: models.Publication.hasMany(models.PublicationLike, { as: 'likes' }), attributes: ['userId'] } ] };El resultado que estoy tratando de obtener se vería así:
[ { id: '2', clubId: '26', teamId: null, userId: '67', date: '2017-04-18T11:23:05.628Z', card: { type: 'status', text: 'publication example text', video: [Object] }, created_at: '2017-04-18T11:23:05.629Z', updated_at: '2017-04-18T11:23:05.629Z', deleted_at: null, likes: [], commentsCount: 4, lastComments: [ [Object], [Object], [Object] ] }]Tenga en cuenta que hay una propiedad CommentCount con el resultado de la consulta de recuento deseado
Intenté agregar en los atributos de inclusión la función de contar por comentarios y repetir la asociación con el modelo PublicationComment sin parámetro de límite (necesito el total). Algo como esto:
attributes: { include: [[sequelize.fn('count', sequelize.col(allComments.id), 'commentsCount']] exclude: attributesToExclude, },Y agregue la nueva asociación dentro de la matriz icludde:
{ model: models.PublicationComment, association: models.Publication.hasMany(models.PublicationComment, { as: 'allComments' }) }pero después de dos días de esfuerzos desperdiciados en esto, no puedo hacerlo funcionar.
¿Alguien tiene algún consejo, recurso o aclaración que pueda usar para avanzar en esto? Gracias.