Estoy usando la sequelize de count de secuelas de la siguiente manera:
Definición:
const countAllOrdersWhere = async (conditions) => Order.count({ where: conditions, }) .then((count) => ({ count, error: null })) .catch((error) => ({ count: null, error }));Uso:
const { count, error: countError } = await countAllOrdersWhere({ [Op.or]: [ { userId: userIds, status }, { status, venueId }, ], });Esto funciona muy bien, sin embargo, ahora necesito agregar una condición basada en un modelo asociado:
order tiene muchos artículos de orderItems asociados (hay un orderId de pedido en cada fila de la tabla de artículos de orderItem ).orderItem tiene un item asociado (hay un itemid de artículo en cada fila de la tabla de artículos de orderItem ). Tengo una matriz de itemIds y me gustaría contar solo los pedidos que están asociados con un artículo de orderItem que tiene un itemId que está en mi lista.
Al consultar los orders , hago cumplir esta cláusula en una función findAll haciendo
include: [ { model: OrderItem, where: Sequelize.literal( itemIds && itemIds.length > 0 ? `"orderItems"."itemId" IN (${itemIds})` : 'true' )}] sin embargo, no estoy seguro de cómo hacer esto en una función de count