在Node js的Azure表存储中插入实体时,请添加PartitionKey

当调用insertEntity()时,这更多的是调用exception的帮助。

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

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

Unaughtexception:错误:函数entityOperation的参数entityDescriptor.PartitionKey应该是ArgumentValidator ._中的对象。extend.object

我基本上把我的对象保存,并创build2个新的属性: PartitionKeyRowKey 。 我给他们的string值。 我正在跟着例子 。 我没有使用entityGenerator,因为这里的示例没有这样做,而Azure Node开发人员门户上的示例却这样做。 如果需要,我不介意在存储特定的属性上使用entityGenerator,但是在azure github回购节点中的样本似乎表明您可以使用简单的string。 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 。 您使用的样本来自旧的位置和旧版本的库,这就是为什么他们不工作。 你会在新的位置find更新的样本和代码。

在较新的版本中,必须为每个表格实体指定一个Edmtypes。 这是因为types存储在存储服务中,我们希望确保我们正在存储您的意图。 每个表格实体都是forms为{_:value,$:Edm.Type}的对象。

实体生成器是一个方便的function,可以使构build表实体对象变得更简单。 我们以刚刚提到的forms返回实体,使用此便利function不会以任何方式更改。