Почему мой ответ от ipcMain сортируется по алфавиту? - PullRequest
1 голос
/ 06 мая 2019

У меня есть функция, которая отправляет запрос в ipcMain, а затем ожидает запуска SQL-запроса. Когда ответ возвращается, я зацикливаюсь на возвращенных данных и отображаю их на экране для просмотра пользователем.

По какой-то причине, когда данные возвращаются, и я регистрирую их в процессе рендеринга, они сортируются в алфавитном порядке. Я не смог определить, где и почему происходит такая сортировка.

Мне кажется, на основании console.logs, что когда-то между ipcMain, отправляющим запрос, и процессом рендеринга, получающим данные, которые он сортирует.

Любое понимание будет оценено.

Я вошел во все вопиющие места, чтобы посмотреть, смогу ли я диагностировать, откуда поступает заказ.

// function that gets the results
// This console.log is alphabetically sorted here
  runQuery(config){
    window.ipc.send('run-query', config);
    return new Promise((resolve, reject) => {
      window.ipc.on('run-query-reply', (event, result) => {
        console.log(result)
        resolve(result);
      });
    });
  }
// calls handler - it is not sorted on this console.log
ipcMain.on('run-query', async (event, arg) => {
  var results = await handlers.runQuery(event, arg, scope);
  console.log(results)
  event.sender.send('run-query-reply', results)
})
// handler function - it is not sorted on this console.log
  async function runQuery (){
    try {
      var connection = await new scope.sql(arg.server.database, arg.server.username, arg.server.password, config);
      return await connection.query(query).spread((results) => {
        console.log(results)
        return results;
      })
    } catch (error) {
      return scope.errorHandler(error.message)
    }
  }

Пример данных:

// Data in ipcMain would like like:
{
 "email": "test", 
 "contact-id":"1",
 "first-name":"test", 
 "allow-email":test"
}
// Data from render window.ipc
{
 "allow-email":"test", 
 "contact-id":"1",
 "email": "test", 
 "first-name":"test"
}

1 Ответ

1 голос
/ 06 мая 2019

Я полагаю, что это, скорее всего, является артефактом входа вашей консоли в Chrome.

Скорее всего, ваш ipcMain регистрирует в терминале, сохраняя ваш порядок ключей объекта.

В то время как ваше окно рендерера.ipc регистрируется в консоли инструментов Chromium dev, которая отображает ключи объектов в алфавитном порядке.

См. также Отображение исходного порядка свойств объектов в console.log

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...