Хранилище таблиц Azure JSON возвращает массив для каждой записи вместо одного массива - PullRequest
1 голос
/ 14 июня 2019

Мне нужно проанализировать вывод JSON из хранилища таблиц Azure. Я могу получить данные, но, похоже, перенастроенный JSON дает мне массив для каждой записи данных вместо ожидаемого единственного массива. ПРИМЕЧАНИЕ: истинный массив должен иметь [] вокруг него, поэтому я не уверен, как выводить / отображать эти данные, так как не могу достичь вложенных значений.

Мой вызов таблицы для получения результатов выглядит следующим образом:

var options = { payloadFormat: "application/json;odata=nometadata" };
tableService.queryEntities('myTable', tableQuery, null, options, function(error, result, response) {
        if(!error) {
        console.log(response.body.value);
    }

Ex. Я ожидаю этого за https://blogs.msdn.microsoft.com/windowsazurestorage/2013/12/05/windows-azure-tables-introducing-json/:

"value":[
   {
      "PartitionKey":"Jonathan",
      "RowKey":"Foster",
      "Timestamp":"2013-12-03T06:45:00.7254269Z",
      "Address":"1234 SomeStreet St, Bellevue, WA 75001",
      "Email":"Jonathan@fourthcoffee.com",
      "PhoneNumber":"425-555-0101",
      "CustomerSince":"2005-01-05T00:00:00Z",
      "Rating":3
   },
   {
      "PartitionKey":"Lisa",
      "RowKey":"Miller",
      "Timestamp":"2013-12-03T06:45:00.8834427Z",
      "Address":"4567 NiceStreet St, Seattle, WA 54332",
      "Email":"Lisa@northwindtraders.com",
      "PhoneNumber":"425-555-0101",
      "CustomerSince":"2003-01-05T00:00:00Z",
      "Rating":2
   },
   {
      "PartitionKey":"Walter",
      "RowKey":"Harp",
      "Timestamp":"2013-12-03T06:45:00.5384082Z",
      "Address":"1345 Fictitious St, St Buffalo, NY 98052",
      "Email":"Walter@contoso.com",
      "PhoneNumber":"425-555-0101",
      "CustomerSince":"2010-01-05T00:00:00Z",
      "Rating":4
   }
]
}

Но я получаю это:

{value: Array(8)}
value: Array(8)
0: {PartitionKey: "Client1", RowKey: "1", Timestamp: "2019-06-05T14:07:08.5541163Z", Location: "eastus", OSType: "WindowsServer", …}
1: {PartitionKey: "Client1", RowKey: "2", Timestamp: "2019-06-04T21:23:42.1804373Z", PowerState: "VM deallocated", OSType: "WindowsServer", …}
2: {PartitionKey: "Client1", RowKey: "3", Timestamp: "2019-06-04T21:23:42.2394792Z", PowerState: "VM deallocated", OSType: "SQL2016SP1-WS2016", …}
3: {PartitionKey: "Client1", RowKey: "4", Timestamp: "2019-06-04T21:23:42.2104586Z", PowerState: "VM deallocated", OSType: "WindowsServer", …}
4: {PartitionKey: "Client1", RowKey: "5", Timestamp: "2019-06-04T21:23:42.2674991Z", PowerState: "VM running", OSType: "WindowsServer", …}
5: {PartitionKey: "Client1", RowKey: "6", Timestamp: "2019-06-04T21:23:42.3045253Z", PowerState: "VM deallocated", OSType: "WindowsServer", …}
6: {PartitionKey: "Client1", RowKey: "7", Timestamp: "2019-06-04T21:23:42.3325452Z", PowerState: "VM deallocated", OSType: "WindowsServer", …}
7: {PartitionKey: "Client1", RowKey: "8", Timestamp: "2019-06-04T21:23:42.3665693Z", PowerState: "VM deallocated", OSType: "SQL2017-WS2016", …}
length: 8
__proto__: Array(0)
__proto__: Object

1 Ответ

3 голосов
/ 18 июня 2019

Вы запрашиваете необработанную строку json, но этот библиотечный вызов дает вам разобранный объект json.Если вам нужна строка, просто вызовите JSON.stringify () для объекта:

var str = JSON.stringify(response.body.value);

Источник для TableService.queryEntities: https://github.com/Azure/azure-storage-node/blob/1e315487b8801b8357b8974c7d925313cb143483/lib/services/table/tableservice.js#L811

...