首页 > 解决方案 > 遍历这个结构?

问题描述

我在 PostgreSQL 中有以下查询:

select bookings."memberId" from bookings
join "memberConnections" mbc on bookings."memberId" = mbc."memberId"
join shifts shf on shf.id = bookings."shiftId"
where bookings.state = 'WAITING_LIST' and (mbc.state = 'LOCKED' or mbc.state = 'REMOVED')
and shf."startTime" > CURRENT_TIMESTAMP;

我将它导入一个文件,然后通过一个名为 Knex.js 的库处理数据

当我运行它并控制台记录查询时,我得到以下结构:

USER_STATE: Result {
  command: 'SELECT',
  rowCount: 32,
  oid: NaN,
  rows: 
   [ anonymous { memberId: 1800 },
     anonymous { memberId: 15476 },
     anonymous { memberId: 15476 },
     anonymous { memberId: 15476 },
     anonymous { memberId: 12553 },
     anonymous { memberId: 12553 },
     anonymous { memberId: 19668 },
     anonymous { memberId: 19668 },
     anonymous { memberId: 21004 },
     anonymous { memberId: 21004 },
     anonymous { memberId: 21004 },
     anonymous { memberId: 21004 },
     anonymous { memberId: 16105 },
     anonymous { memberId: 14927 },
     anonymous { memberId: 15476 },
     anonymous { memberId: 12553 },
     anonymous { memberId: 12553 },
     anonymous { memberId: 12553 },
     anonymous { memberId: 12553 },
     anonymous { memberId: 17923 },
     anonymous { memberId: 17273 },
     anonymous { memberId: 12553 },
     anonymous { memberId: 12553 },
     anonymous { memberId: 19429 },
     anonymous { memberId: 17312 },
     anonymous { memberId: 17273 },
     anonymous { memberId: 15476 },
     anonymous { memberId: 15476 },
     anonymous { memberId: 15476 },
     anonymous { memberId: 15476 },
     anonymous { memberId: 15476 },
     anonymous { memberId: 19634 } ],
  fields: 
   [ Field {
       name: 'memberId',
       tableID: 22531,
       columnID: 3,
       dataTypeID: 23,
       dataTypeSize: 4,
       dataTypeModifier: -1,
       format: 'text' } ],
  _parsers: [ [Function: parseInteger] ],
  RowCtor: [Function: anonymous],
  rowAsArray: false,
  _getTypeParser: [Function: bound ] }

这几乎是我需要的,但是,我只需要 memberId 数据,有什么办法可以通过它进行映射以仅取回 memberId 属性?

我已经尝试过了,但它似乎不起作用:

  const users = userState.map(users => ({
      memberId: memberId;
  }))

标签: javascriptarraysnode.jsobjectknex.js

解决方案


您需要先将该结构转换为有效的 JSON。然后,您可以根据userState.rows需要进行处理。

  • 是您将knex.js响应转换为 JSON 的参考。

  • 这是一个使用有效 JSON 的工作示例 -

var userState = {
    rows:
        [{ memberId: 1800 },
        { memberId: 15476 },
        { memberId: 15476 },
        { memberId: 12553 },
        { memberId: 12553 },
        { memberId: 19668 },
        { memberId: 19668 },
        { memberId: 21004 },
        { memberId: 21004 },
        { memberId: 19634 }],
    fields:
        [{
            name: 'memberId',
            tableID: 22531,
            columnID: 3,
            dataTypeID: 23,
            dataTypeSize: 4,
            dataTypeModifier: -1,
            format: 'text'
        }]
};

var data = userState.rows.map((users, index) =>
    users.memberId
);

console.log(data);


推荐阅读