2017-10-06 1 views
0

Ich kann Node.js verwenden, um Daten aus Azure-Tabellen abzurufen, zu posten, zu stellen und zu löschen.Reine JavaScript- oder jQuery-Aufrufe an Azure-Tabellenspeicher

Allerdings haben sich die Anforderungen geändert, wo ich nicht Node.js verwenden können und ich brauche eine reine JavaScript oder jQuery-Lösung (ex. Ajax) nutzen, um meine REST-Abfragen gegen die Azure Table Endpoint durchführen.

Ich werde wahrscheinlich die richtigen Header, Autorisierung und mögliche SaS ... haben aber keine Beispiele im Internet gefunden, die reine Ajax (nicht .NET, sondern eine reine JavaScript-Datei) oder reine JavaScript-Lösung sind.

Als Beispiel kann ich einen Nicht-Azure-Tabellenendpunkt wie eine generische REST-Tabelle treffen und Ergebnisse zurückliefern, aber wenn ich ihn auf den Azure-Tabellenendpunkt setze, erhalte ich den erwarteten 403-Autorisierungsfehler, da ich nicht überlasse die Autorisierung in/unsicher, wo das und die richtigen Header zu setzen:

<div id="jsondatahere" ></div> 

<script> 
yourUrl = 'https://myaccount.table.core.windows.net/myTable()' 

function Get(yourUrl){ 
    var Httpreq = new XMLHttpRequest(); // a new request 
    Httpreq.open("GET",yourUrl,false); 
    Httpreq.send(null); 
    return Httpreq.responseText; 
} 

    var json_obj = JSON.parse(Get(yourUrl)); 
console.log(json_obj); 
console.log("this is the author name: "+json_obj.clientName); 
document.getElementById("jsondatahere").innerHTML = json_obj.clientName; 
</script> 

mit meinem Beispiel oder jQuery Ajax, hat jemand ein Beispiel davon, wie die Berechtigungen so eingestellt, dass ich bekommen kann, posten, setzen, löschen ?

Update:

kann ich meine Tabelle abfragen, aber Probleme habe den Wert eines Knotens ausgibt, da ich bin es gewohnt, JSON verwenden.

<div id="jsondatahere" ></div> 

<!-- Browersify version of Node Azure Storage Files --> 
<script src="https://one.rackspace.com/download/attachments/303335292/azure-storage.common.js"></script> 
<script src="https://one.rackspace.com/download/attachments/303335292/azure-storage.table.js"></script> 

<script> 

var tableUri = 'https://minenotyours.table.core.windows.net'; 
var tableService = AzureStorage.createTableServiceWithSas(tableUri, '?sv=2016-05-31&tn=myInfo&sig=DQKSL13Z%2BF9Xp3WQaBtnEpyWADw9ggWqiwhvcE6YRXE%3D&se=2017-10-10T22%3A05%3A14Z&sp=raud'); 

var tableQuery = new AzureStorage.TableQuery().top(200); 
tableService.queryEntities('myInfo', tableQuery, null, function(error, results, response) { 
    if (error) { 
     // Query entities error 
     console.log(error); 
    } else { 
     for (var i = 0, entity; entity = results.entries[i]; i++) { 
      // Deal with entity object 
      console.log(entity); // Returns whole object 
      console.log(entity.clientName); // Returns [object Object] > clientName 
      console.log(response.body.value[0].clientName); // Returns Value as expected 
      document.getElementById("jsondatahere").innerHTML = response.body.value[0].clientName; // Outputs value to HTML 
     } 

    } 
}); 
</script> 

Wie kann ich oben den XML-Wert für entity.clientName ausgeben?

+0

CORS Unterstützung für Tabellen, dort zu sein aussieht: https://blogs.msdn.microsoft.com/windowsazurestorage/2013/11/27/windows -azure-storage-release-introducing-cors-json-minute-metrics-and-more/Ich habe auch nur die Schnittstelle überprüft und unter "Table Service" für mein Storage-Konto listet es CORS – Kode

+1

Ah, das ist gut zu wissen. Ich werde den vorherigen Kommentar dann löschen. Ich habe gesucht, wie Sie mit JS authentifizieren und fand diese Bibliothek, hoffentlich ist es von einiger Verwendung: https://dmrelease.blob.core.windows.net/urzestoragejssample/samples/sample-table.html –

+0

Ja! Das ist ein guter Anfang! – Kode

Antwort

0

Mit der Azure Storage JavaScript-Bibliothek habe ich, was ich brauche. Hier ist ein funktionierendes Beispiel. BITTE BEACHTEN SIE: Als bewährte Methode würde ich SaS-Token auf einem Backend-Server generieren und die Option createTableServicewithSaS verwenden. Stellen Sie sicher, dass Ihre CORS für Azure Tabellen im Azure Portal setzen:

<!-- Uses Azure Storage JavaScript Library - https://dmrelease.blob.core.windows.net/azurestoragejssample/samples/sample-table.html --> 

<div id="jsondatahere" ></div> 

<!-- Browersify version of Node Azure Storage Files --> 
<script src="azure-storage.common.js"></script> 
<script src="azure-storage.table.js"></script> 

<script> 

var tableService = AzureStorage.createTableService('mystorage', 'blahblahblahbalh=='); 
var tableQuery = new AzureStorage.TableQuery().top(200); 
tableService.queryEntities('ClientInfo', tableQuery, null, function(error, results, response) { 
    if (error) { 
     // Query entities error 
     console.log(error); 
    } else { 
     for (var i = 0, entity; entity = results.entries[i]; i++) { 
      // Deal with entity object 
      console.log(entity); 
      console.log(entity.clientName._); 
      document.getElementById("jsondatahere").innerHTML += entity.clientName._; 
     } 
    } 
}); 
</script> 
Verwandte Themen