[英]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个新属性: PartitionKey
和RowKey
。 我给他们字符串值。 我正在关注这些示例 。 我没有使用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.