javascript - 在将输出返回给用户 JS 之前过滤掉已删除的结果

标签 javascript arrays node.js filter sequelize.js

在从服务器返回输出之前,我尝试过滤掉所有已删除的部分。

我的架构的结构可以描述如下:

results: 
   - result: 
       -item: 
          -itemReservations: 
               -reservationPart: 
                   -isDeleted: true
               -reservationPart: 
                   -isDeleted: false
               -reservationPart: 
                   -isDeleted: false

我添加了以下代码,但是返回的输出仍然包含 part.isDeletedtrue 的结果。

...
.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/

相关文章:

c - 在 C 中的 unsigned char 中搜索关键字

javascript - node.js/读取文件的前 100 个字节

node.js - Webpack 配置不起作用,路径必须是绝对路径

javascript - JSON.Stringify 覆盖数据

javascript - 空调功能

javascript - 与 React 路由器相比,NextJs 路由器似乎非常慢

javascript - 如何逐步构建和拆除 JavaScript 对象?

javascript - 使用全局 JavaScript 变量和 Internet Explorer 的 YepNope/Modernizr 回调

javascript - 使用 Node 读取 Xlsx 文件并生成 Json

node.js - passport.js 使用 sails.js 验证弹出窗口