从Node.js中的Azure表存储返回原始实体

我的JavaScript对象/实体看起来像这样:

{ 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中的原始值? 我并不需要JavaScript对象上的所有这些ODatatypes和元数据 。

我可能需要使用像PropertyResolver的东西,但文档是相当混乱。

你可以使用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); } }); 

如何尝试使用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; } });