2017-01-04 1 views
1

Meine JavaScript-Objekte/schauen Entitäten wie folgt aus:Rückkehr Roh Entitäten aus Azure Tabellen Speicher in Node.js

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

Die Entitäten ich in die Azure TableService passieren müssen, um etwas so aussehen werden:

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

Dies ist leicht mit der entityGenerator und dies ist auch das Format, in dem die Entitäten aus dem TableService zurückgegeben werden.

Ist es jedoch möglich, die Rohwerte aus dem TableService, wenn fetching data aus einer Tabelle zurückgegeben? Ich brauche nicht alle diese OData types and metadata auf meine JavaScript-Objekte.

Ich könnte etwas wie ein PropertyResolver verwenden müssen, aber die Dokumentation ist ziemlich verwirrend.

Antwort

1

Sie können entityResolver verwenden, um dies zu erreichen.

Beispiel:

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

scheint ein wenig hacky, aber es macht den Job – Schaemelhout

3

Wie wäre es mit options Parameter versuchen?

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

Es kann auch mit Abfragen verwendet werden:

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

und sauberere json bekommen Sie response.body statt result könnte nehmen.

Beispiel:

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

'application/json; OData = nometadata' nicht wirklich keine Metadaten zurückkehren ... und das' response.body' war ein Anständige Option, aber das behandelt alle meine Eigenschaften als Zeichenfolgen, so das ist auch nicht die beste Lösung. Einen Versuch wert, danke! – Schaemelhout

Verwandte Themen