【问题标题】:Returning raw entities from Azure Table Storage in Node.js从 Node.js 中的 Azure 表存储返回原始实体
【发布时间】:2017-01-05 18:56:57
【问题描述】:

我的 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 返回实体的格式。

fetching data 从表中返回时,是否可以从 TableService 返回原始值? 我的 JavaScript 对象并不需要所有这些 OData types and metadata

我可能需要使用 PropertyResolver 之类的东西,但文档很混乱。

【问题讨论】:

    标签: node.js azure odata azure-table-storage


    【解决方案1】:

    试试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;
            }
    });
    

    【讨论】:

    • application/json;odata=nometadata 实际上并没有返回 NO 元数据......而 response.body 是一个不错的选择,但它将我的所有属性都视为字符串,所以这也不是最好的解决方案。不过值得一试,谢谢!
    【解决方案2】:

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

    【讨论】:

    • 看起来有点老套,但确实可以完成工作
    • 感谢@AaronChen,它成功了。 (有点hacky,是的,但有效!)
    猜你喜欢
    • 2017-11-06
    • 2013-04-02
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-21
    • 2020-11-07
    相关资源
    最近更新 更多