NodeJS:属性从响应中消失了吗?

问题描述

在我的控制台中:

[ CampaignStrategy {
    id: 248,id_mm: 828419,strategy_name: "norhart_Encore_AUD",impressions: 7623,clicks: 13,TEST_PROPERTY: '222222',ordered_impressions:
     Orderedimpression { ordered_impressions: '123',id: 7,strategy_id: 248 }
    },...
]

浏览器(XHR)中收到的响应对象:

[
  {
    "id": 248,"id_mm": 828419,"strategy_name": "norhart_Encore_AUD","impressions": 7623,"clicks": 13,},...
]

请注意,TEST_PROPERTYordered_impressions在后​​者中不存在。我究竟做错了什么? 这是我的控制器逻辑:

@get('/campaignStrategies/{id}')
  async findStrategies(
    @param.path.number('id') id: number,): Promise<any> {
    const campaignStrats = await this.campaignStrategyRepository.find({
      where: {
        campaignId: id
      }
    });

    const campaignStratsIds = campaignStrats.map(strat => {
      return { strategy_id: strat.id }
    });

    const campaignSettings = await this.orderedimpressionRepository.find({
      where: {
        or: campaignStratsIds
      }
    });

    const settingsTable = await campaignSettings.reduce((acc: any,setting: any) => {
      acc[setting.strategy_id] = setting;
      return acc;
    },{});

    const fullData = campaignStrats.map((strat: any) => {
      strat['TEST_PROPERTY'] = '222222'
      strat['ordered_impressions'] = settingsTable[`${strat.id}`];
      return strat;
    });

    console.log(fullData);

    return fullData;
  }

解决方法

您应该尝试:

const fullData = campaignStrats
    .map((strat: any) => { 
        return {...strat,TEST_PROPERTY: 2222 /* and so on /* } 
    }

通过这种方式,您返回的对象不同于campaignStrats列表中的对象。

PS:我不确定,console.log为什么向我们展示了错误的响应思想,也许有人会在此处发表评论或编辑。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...