Итерация по этой структуре? - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть следующий запрос в 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;
  }))

Ответы [ 3 ]

0 голосов
/ 11 декабря 2018

Попробуйте это

const userState = {
    rows: [
        { memberId: 1 },
        { memberId: 2 }
    ]
}

const users = userState.rows.map(users =>
    users.memberId
)

console.log(users)

// [ 1, 2 ]
0 голосов
/ 11 декабря 2018

Я думаю, что это поможет вам: https://knexjs.org/#Interfaces-map

Я думаю, что ошибка в

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

Это должно быть:

.map(function(row) {
  return row.memberId;
})

Вы можете попробовать мое решение, это может работать, потому что я не использую Knex.js для SQL с Node.JS, я обычно Sequelize

0 голосов
/ 11 декабря 2018

Сначала вам нужно будет преобразовать эту структуру в действительный 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);
...