2016-08-08 29 views
1

Ich versuche, einige Dreibettzimmer, über Javascript (Abfrage-Konsole), in ein JSON-Dokument des FormularsWie füge ich mehr als ein Triple in ein Marklogic JSON-Dokument ein?

declareUpdate(); 
xdmp.documentInsert('/aem/5/content/demo-spark/en_GB/automation_article.json', 
{ 
    "triple" : { 
    "subject" : "https://content.ea.com/aem/5/content/demo-spark/en_GB/automation_article2.json", 
    "predicate" : "https://content.ea.com/iri/author", 
    "object" : "jasonmoore" 
    }, 
    "triple" : { 
    "subject" : "https://content.ea.com/aem/5/content/demo-spark/en_GB/automation_article2.json", 
    "predicate" : "https://content.ea.com/iri/id", 
    "object" : "automation_article2" 
    }, 
    "triple" : { 
    "subject" : "https://content.ea.com/aem/5/content/demo-spark/en_GB/automation_article2.json", 
    "predicate" : "https://content.ea.com/iri/dateCreated", 
    "object" : "2015-08-14 09:38:10 GMT-7:00" 
    }, 
    "content" : { 
    . . . 
    } 
}); 

jedoch einzufügen, wenn ich in das neu erstellte Dokument aussehen, nur der letzte dreifache besteht, die andere zwei fehlen.

Was muss ich tun, um die ersten zwei Tripel im selben Dokument zu erhalten?

+0

Sie nur einen Schlüssel mit dem gleichen Namen haben kann. –

Antwort

2

Ein JSON-Objekt speichert Schlüssel-Wert-Paare. Die Schlüssel sind einzigartig.

var obj = { 
 
    a : 'This is a property, but it will be overwritten', 
 
    a : 'Im really the value of a property' 
 
}; 
 

 
console.log(obj);

Das ist das gleiche sagen:

var obj = { 
 
    a : 'This is a property, but it will be overwritten' 
 
}; 
 

 
obj['a'] = 'Im really the value of a property'; 
 

 
console.log(obj);

Jetzt können Sie denken, was passiert ist: Jedesmal, wenn man versuchen, in den Schlüssel "triple" einzufügen ist overwritting was es enthält, und der Wert, der schließlich speichert, ist der Letzter.

var myDbObject = {}; 
 
var obj = { 
 
    "triple" : { 
 
    "subject" : "https://content.ea.com/aem/5/content/demo-spark/en_GB/automation_article2.json", 
 
    "predicate" : "https://content.ea.com/iri/author", 
 
    "object" : "jasonmoore" 
 
    }, 
 
    "triple" : { 
 
    "subject" : "https://content.ea.com/aem/5/content/demo-spark/en_GB/automation_article2.json", 
 
    "predicate" : "https://content.ea.com/iri/id", 
 
    "object" : "automation_article2" 
 
    }, 
 
    "triple" : { 
 
    "subject" : "https://content.ea.com/aem/5/content/demo-spark/en_GB/automation_article2.json", 
 
    "predicate" : "https://content.ea.com/iri/dateCreated", 
 
    "object" : "2015-08-14 09:38:10 GMT-7:00" 
 
    } 
 
}; 
 

 
Object.keys(obj).forEach(key=>{ 
 
    myDbObject[key] = obj[key]; 
 
}); 
 

 
console.log(myDbObject);

6

Ich habe versucht, dies als einen Kommentar hinzufügen, aber es wird nicht mit Zeilenumbrüchen formatiert werden. Das ist also nur eine Erweiterung der Antwort von Jose Hermosilla Rodrigo.

Da Sie nicht viele Objektschlüssel mit dem gleichen Namen haben können, verwenden Sie ein Array:

declareUpdate(); 
xdmp.documentInsert('/aem/5/content/demo-spark/en_GB/automation_article.json', 
{ "triples": [ 
    { "triple": { 
    "subject" : "https://content.ea.com/aem/5/content/demo-spark/en_GB/automation_article2.json", 
    "predicate" : "https://content.ea.com/iri/author", 
    "object" : "jasonmoore" 
    }}, 
    { "triple": { 
    "subject" : "https://content.ea.com/aem/5/content/demo-spark/en_GB/automation_article2.json", 
    "predicate" : "https://content.ea.com/iri/id", 
    "object" : "automation_article2" 
    }}, 
... 
], 
    "content" : { 
    . . . 
    } 
}); 
+0

Die Subjekt-, Prädikat- und Objekteigenschaften müssen in eine Eigenschaft namens triple eingebettet werden. Abgesehen davon können Sie ein solches Objekt an einer beliebigen Stelle platzieren, in einer Eigenschaft namens Tripel mit einem Array solcher Tripelobjekte oder anderen Namen, die Eigenschaften triple1, triple2 usw. haben. Solange gibt es diese Umbruch-Eigenschaft namens triple. – grtjn

+0

Ich habe das Codebeispiel aktualisiert, um dies widerzuspiegeln. – grtjn