簡體   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