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;
}
嗨,我有一個關于 react.js 和 mongoDB 的問題。如果您在客戶端單擊完成選項,finalQuery 的控制臺日志如下所示。
finalQuery:{
archived: false
boardId: {$in: Array(0)}
createdAt: undefined listId: {$nin: Array(0)}
workflowStateId: ['ERTYUIIIIOPPCGVH']
}
理想情況下,如果用戶單擊多個選項,例如進行中或已識別,當控制臺登錄時,finalQuery 的 workflowStaeId 應如下所示。
workflowStateId: ['ERTYUIIIIOPPCGVH','asdasdasdasda','1231231dsxa']
但現在它只是被覆寫了。有誰知道如何解決這個問題?
我試圖更改代碼
if (params.completed) finalQuery = {...finalQuery, ...completed};
if (params.inProgress) finalQuery = {...finalQuery, ...inProgress};
if (params.identified) finalQuery = {...finalQuery, ...identified};
到
if (params.completed) finalQuery.push(completed);
if (params.inProgress) finalQuery.push(inProgress);
if (params.identified) finalQuery.push(identified);
但是得到一個錯誤,說 finalQuery.push 不是一個函式。
uj5u.com熱心網友回復:
您需要 concat 中的陣列finalQuery.workflowStateId,但您只使用物件擴展語法來合并物件。.workflowStateId您還必須對嵌套在更深層次的陣列使用陣列擴展語法。
if (params.completed) finalQuery = {
...finalQuery,
...{
workflowStateId:
[...(finalQuery.workflowStateId ?? []), ...completed.workflowStateId]
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/459380.html
標籤:javascript 反应 mongodb
