2014-07-25 1 views
1

Il s'agit davantage d'un appel à l'aide avec une exception lors de l'appel insertEntity(). J'utilise Nodejs sur Azure et l'édition à Monaco, et j'ai installé la dernière version de Azure Storage sur NPM.Ajout de la propriété PartitionKey lors de l'insertion d'une entité dans le stockage de table Azure pour nodejs

L'exception est que je rencontre: (trace complète de la pile au fond)

Unaught exception: Error: Parameter entityDescriptor.PartitionKey for function entityOperation should be an object at ArgumentValidator._.extend.object

Je prends essentiellement mon but pour sauver et créer 2 nouvelles propriétés: PartitionKey et RowKey. Je leur donne des valeurs de chaîne. Je suis following the examples. Je n'utilise pas entityGenerator, contrairement aux exemples ici, contrairement aux exemples du portail des développeurs Azure Node. Cela ne me dérangerait pas d'utiliser entityGenerator sur les propriétés spécifiques au stockage si nécessaire, mais les exemples dans le nœud azure github repo semblent suggérer que vous pouvez utiliser des chaînes simples. Le entityGenerator semble un peu moche et encombrant, honnêtement, car vous devrez coder plus autour de l'entité lorsque vous le ramenez.

Comment puis-je ajuster mon code pour résoudre ce problème et appeler le insertEntity() avec succès?

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

stacktrace

Répondre

1

L'emplacement de la bibliothèque cliente de stockage Azure a changé à https://github.com/Azure/azure-storage-node. Les échantillons que vous utilisez proviennent de l'ancien emplacement et d'une ancienne version de la bibliothèque, ce qui explique pourquoi ils ne fonctionnent pas. Vous trouverez des exemples et des codes mis à jour au nouvel emplacement.

Dans la version la plus récente, un type Edm doit être spécifié pour chaque entité de table. C'est parce que le type est stocké dans le service de stockage et nous voulons nous assurer que nous stockons ce que vous avez l'intention. Chaque entité de table est un objet de la forme {_: value, $: Edm.Type}.

Le générateur d'entités est une fonctionnalité pratique qui facilite la construction d'objets d'entité de table. Nous retournons les entités dans la forme que nous venons de mentionner et l'utilisation de cette fonctionnalité pratique ne changera rien à cela.

+0

Incroyable! Un tel changement sans aucune rétrocompatibilité, c'est la façon Microsoft ;-) Toute la documentation fait toujours référence à l'ancienne (http://azure.microsoft.com/fr-fr/documentation/articles/storage-nodejs-how -to-use-table-storage/...) qui me rappelle Silverlight ... –

+0

Vous pouvez en apprendre plus sur le nouveau SDK ici: http://blogs.msdn.com/b/windowsazurestorage/archive/2014/ 06/26/microsoft-azure-storage-client-module-for-node-js-v-0-2-0.aspx –

+0

@ThomasDecaux Malheureusement, nous n'avons pas encore mis à jour les documents non-English Azure Storage Node. Cependant, les documents anglais équivalents [ici] (http://azure.microsoft.com/fr-fr/documentation/articles/storage-nodejs-how-to-use-table-storage/) sont entièrement à jour. –

Questions connexes