2017-01-04 1 views
1

объектов Моих JavaScript/объекты выглядеть следующим образом:Возврата сырья объектов из Azure Table Storage в Node.js

{ 
    id: 1, 
    name: 'foo', 
    timestamp: new Date() 
} 

ПРИМИТИВЫ Мне нужно перейти к Azure TableService будет выглядеть примерно так:

{ 
    id: { '_': 1, '$': 'Edm.Int32' }, 
    name: { '_': 'foo', '$': 'Edm.String' }, 
    timestamp:{ '_': new Date(), '$': 'Edm.DateTime' }, 
} 

Это легко сделать, используя entityGenerator, и это также формат, в котором объекты возвращаются из TableService.

Возможно ли вернуть исходные значения из TableService, когда fetching data из таблицы? Мне не нужны все эти OData types and metadata на моих объектах JavaScript.

Возможно, мне понадобится что-то вроде PropertyResolver, но документация довольно запутанна.

ответ

1

Для этого вы можете использовать entityResolver.

Пример:

var entityResolver = function(entity) { 
    var resolvedEntity = {}; 

    for(key in entity) { 
     resolvedEntity[key] = entity[key]._; 
    } 
    return resolvedEntity; 
} 

var options = {}; 
options.entityResolver = entityResolver; 

tableSvc.retrieveEntity('mytable', 'hometasks', '1', options, function(error, result, response) { 

    if(!error) { 
     console.log('result: ', result); 
    } 
}); 
+0

Кажется немного Hacky, но это делает работу – Schaemelhout

3

Как о попытке с options параметром?

tableService.retrieveEntity(tableName, partitionKey, rowKey, {payloadFormat:"application/json;odata=nometadata"}, function(error, result, response) {}); 

Он может быть использован также с запросами:

tableService.queryEntities(tableName, query, null,{payloadFormat:"application/json;odata=nometadata"}, function(error,result, response) {}); 

А чтобы получить более чистый JSON вы можете взять response.body вместо result.

Пример:

tableService.retrieveEntity(tableName, partitionKey, rowKey, {payloadFormat:"application/json;odata=nometadata"}, function(error, result, response) { 
     if (!error) 
     { 
      var myEntity = response.body; 
     } 
}); 
+0

'приложения/JSON; OData = nometadata' не фактически не возвращать NO метаданных ... и' response.body' был достойный вариант, но который обрабатывает все мои свойства как строки, так что это тоже не лучшее решение. Стоит даже выстрел, спасибо! – Schaemelhout

Смежные вопросы