2016-03-31 9 views
1

Ich versuche, eine .json-Datei als einzelnes Dokument in einer ArangoDB-Sammlung innerhalb von javascript/ajax zu veröffentlichen.Wie man eine .json-Datei mit Ajax an ArangoDB schreibt

kann ich einstellen (bis ArangoDB) die .json Datei curl verwenden, so das funktioniert poste ich kann (zu ArangoDB) einfach {key: value} Paare mit AJAX, so dass Werke, sondern die Kombination der beiden scheint zu sein, Eine Brücke zu weit. Ich habe ein paar Nächte damit verbracht, so weit zu kommen, also würde jede Hilfe sehr geschätzt werden. Danke im Voraus.

Mein JavaScript-Code sieht wie folgt aus

var database_URL = prompt("Please enter your URL", "http://xxx..xxx.xxxx.:8529/_db/collection_name/_api/document?collection=PA_Users&createCollection=false"); 

    var fd = new FormData(); 
    var selectedFile = document.getElementById('files').files[0]; 
    console.log(selectedFile.name);// this works 
    fd.append(selectedFile.name,selectedFile); 

var settings = { 
     url : database_URL, 
     type : "POST", 
     headers: { 
     'Authorization': "Basic " + btoa(username1 + ":" + passwrd1) 
     }, 
     data: fd, 
     processData: false, 
     success: function(data) { 
     // display feedback to user 
     alert("booyah"); 
    }, 
     error: function(data) { 
      // display feedback to user 
      alert("boo hoo"); 
     } 
    }; 

    $.ajax(settings); 

Antwort

1

Ich denke, sollten Sie/_api/Import statt/_api/Dokument:

HTTP Interface for Bulk Imports

Hier ist ein kleines Arbeitsbeispiel (ohne Berechtigung):

$.ajax({ 
     type: "POST", 
     url: 
     '/_api/import?type=auto&collection=' + 
       encodeURIComponent(yourCollectionID) + 
     '&createCollection=false', 
     data: file, 
     processData: false, 
     contentType: 'json', 
     dataType: 'json', 
     complete: function(xhr) { 
     if (xhr.readyState === 4 && xhr.status === 201) { 
      callback(false); 
     } else { 
      try { 
      var data = JSON.parse(xhr.responseText); 
      if (data.errors > 0) { 
       // error 
      } 
      else { 
       // success 
      } 
      } 
      catch (err) { 
      console.log(err); 
      } 
     } 
     } 
    }); 
    } 

Die API unterstützt a wenige Eingabeformate: Einzel

1.) Dokument

{name: "Jonny"} 

2.) Mehrere Dokumente (ein Dokument in jeder Reihe)

{name: "Jonny"} 
{name: "Adam"} 
{name: "Peter"} 

3.) mehrere Dokumente in JSON Array

[{name: "Jonny"}, {name: "Adam"}, {name: "Peter"}] 
+0

danke, der Wechsel vom Dokument API zum Import API machte den Unterschied, und mein Code funktioniert jetzt. Danke, Grazie. – Frank

+0

@Frank kannst du die Antwort dann als akzeptiert markieren? – dothebart

+0

Entschuldigung für die Verzögerung bei der Markierung akzeptiert, dies war mein erster Beitrag, und ich musste den Akzeptieren-Button finden. danke nochmal – Frank