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

Returning raw entities from Azure Table Storage in Node.js

我的 JavaScript objects/entities 看起来像这样:

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

我需要传递给 Azure TableService 的实体看起来像这样:

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

这可以使用 entityGenerator 轻松完成,这也是从 TableService return 编辑实体的格式。

fetching data 来自 table 时,是否可以 return 来自 TableService 的原始值? 我的 JavaScript 对象并不需要所有这些 OData types and metadata

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