2017-01-04 41 views
1

我的JavaScript对象/实体是这样的:中的Node.js从Azure Table中存储回到原单位

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

我需要传递给在Azure TableService的实体将是这个样子:

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

这很容易使用entityGenerator完成,这也是从TableService返回实体的格式。

是否有可能从表格中返回fetching data的TableService的原始值? 我真的不需要我的JavaScript对象上的所有这些OData types and metadata

我可能需要使用类似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

似乎有点哈克,但它的工作 – 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

相关问题