在从服务器返回输出之前,我尝试过滤掉所有已删除的部分。
我的架构的结构可以描述如下:
results:
- result:
-item:
-itemReservations:
-reservationPart:
-isDeleted: true
-reservationPart:
-isDeleted: false
-reservationPart:
-isDeleted: false
我添加了以下代码,但是返回的输出仍然包含 part.isDeleted
为 true
的结果。
...
.then(results =>
results.map(result => {
if (result.item.itemReservations.length > 0) {
result.item.itemReservations.map(
itemReservation => {
itemReservation.reservationParts = itemReservation.reservationParts.filter(
part => !part.isDeleted
);
return itemReservation;
}
);
}
return result;
})
).then(filteredResults => ...)
最佳答案
该问题特定于 sequelize.js
- result
是一个sequelize 对象,而不是一个 json 对象:
添加
const jsonResult = result.toJSON();
解决了问题。
正确代码:
.then(results =>
results.map(result => {
const jsonResult = result.toJSON();
jsonResult.item.itemReservations.map(
itemReservation => {
itemReservation.reservationParts = itemReservation.reservationParts.filter(
part => !part.isDeleted
);
return itemReservation;
}
);
return jsonResult;
})
).then(filteredResults => ...)
此外,正如另一个答案所建议的 - if (result.item.itemReservations.length > 0)
是无用的。 [].map(...)
返回 []
关于javascript - 在将输出返回给用户 JS 之前过滤掉已删除的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60056480/