function getFilterQuery() { const completedWorkState = WorkflowStates.findOne({title: 'Completed'}); const inProgressWorkState = WorkflowStates.findOne({title: 'In Progress'}); const identifiedWorkState = WorkflowStates.findOne({title: 'Identified'}); const completed = {workflowStateId: [completedWorkState._id]}; const inProgress = {workflowStateId: [inProgressWorkState._id]}; const identified = {workflowStateId: [identifiedWorkState._id]}; let finalQuery = { archived: false, boardId: {$in: boardIds}, listId: {$nin: [...managerListIds, ...unreportedListIds]}, createdAt: dateFilterQuery(), }; if (params.completed) finalQuery = {...finalQuery, ...completed}; if (params.inProgress) finalQuery = {...finalQuery, ...inProgress}; if (params.identified) finalQuery = {...finalQuery, ...identified}; console.log(`finalQuery:`, finalQuery); return finalQuery; }Hola, tengo una pregunta sobre react.js y mongoDB. Si hace clic en la opción completada en el lado del cliente, el registro de la consola de finalQuery se ve a continuación.
finalQuery:{ archived: false boardId: {$in: Array(0)} createdAt: undefined listId: {$nin: Array(0)} workflowStateId: ['ERTYUIIIIOPPCGVH'] }Idealmente, si un usuario hace clic en varias opciones como en progreso o identificado, el flujo de trabajo StaeId de finalQuery debería verse como a continuación cuando la consola inicie sesión.
workflowStateId: ['ERTYUIIIIOPPCGVH','asdasdasdasda','1231231dsxa']Pero ahora mismo está sobrescrito. ¿Alguien sabe cómo solucionar esto?
Traté de cambiar los códigos
if (params.completed) finalQuery = {...finalQuery, ...completed}; if (params.inProgress) finalQuery = {...finalQuery, ...inProgress}; if (params.identified) finalQuery = {...finalQuery, ...identified};a
if (params.completed) finalQuery.push(completed); if (params.inProgress) finalQuery.push(inProgress); if (params.identified) finalQuery.push(identified);Pero obtuve un error que decía que finalQuery.push no es una función.
Debe concatenar la matriz en finalQuery.workflowStateId , pero solo usa la sintaxis de distribución de objetos para fusionar objetos. También debe usar la sintaxis de distribución de matriz para la matriz .workflowStateId que está anidada en un nivel más profundo.
if (params.completed) finalQuery = { ...finalQuery, ...{ workflowStateId: [...(finalQuery.workflowStateId ?? []), ...completed.workflowStateId] } }