繁体   English   中英

在Azure表存储中为Node.js插入实体时添加PartitionKey属性

[英]Adding PartitionKey propery when inserting an entity in Azure table storage for nodejs

调用insertEntity()时,这更多的是寻求异常帮助。

我在Azure上使用Nodejs并在摩纳哥中进行编辑,并且我已NPM安装了最新版本的Azure存储。

我遇到的异常是:(底部的完整堆栈跟踪)

未捕获的异常:错误:函数entityOperation的参数entityDescriptor.PartitionKey应该是ArgumentValidator ._。extend.object上的对象

我基本上是要保存对象,并创建2个新属性: PartitionKeyRowKey 我给他们字符串值。 我正在关注这些示例 我没有使用EntityGenerator,因为这里没有使用示例,而Azure Node开发人员门户上的示例却在使用。 如果需要的话,我不介意在特定于存储的属性上使用entityGenerator,但是节点azure github repo中的示例似乎建议您可以使用简单的字符串。 老实说,entityGenerator看起来有点丑陋和繁琐,因为当您带回实体时,您必须围绕该实体进行额外的编码。

如何调整代码以解决此问题并成功调用insertEntity()

exports.saveTally = function(tally, callback) {
    var tableSvc = getAzureTableService();
     tableSvc.createTableIfNotExists("tally", function(error, result, response) {
if (!error) {    
  tally.PartitionKey="tally";
  tally.RowKey = tally.id;       
  tableSvc.insertEntity("tally", tally, function(error, result, response) {
    if (error) {
      console.log("*Error saving tally " + error.toString());
    }
    else {
      callback(tally.id);
    }
  });
}
});}

堆栈跟踪

Azure存储客户端库的位置已更改为https://github.com/Azure/azure-storage-node 您正在使用的示例来自旧位置和库的旧版本,这就是为什么它们不起作用的原因。 您将在新位置找到更新的示例和代码。

在较新的版本中,必须为每个表实体指定一个Edm类型。 这是因为类型存储在存储服务中,并且我们要确保我们存储的是您想要的内容。 每个表实体都是一个{_:value,$:Edm.Type}形式的对象。

实体生成器是一项便利功能,可简化表实体对象的构造。 我们以刚才提到的形式返回实体,使用此便利功能将不会以任何方式改变实体。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM