Ich habe ein Json Dokument:Zugang angegebenen Attribute von Json für Suchindex in cloudant
{
"_id": "3de00db35e6549604c711e7295a1982a",
"_rev": "1-ecba71644d341dfe5cb9abf6dd13b23a",
"dateCreated": "2014-01-29 00:00:00",
"attributeCollection": {
"attributeArray": [
{
"updateable": false,
"lookup": "issuetype",
"issueAttributeDefinitionId": 13,
"attributeType": 1,
"name": "Web Type",
"value": [
"Improper Limitation of Authentication"
]
},
{
"updateable": true,
"lookup": "status",
"issueAttributeDefinitionId": 1,
"attributeType": 4,
"name": "Status",
"value": [
"Access with Right Permission"
]
}
]
},
"hash": "287030d6efa085b5b92b7106c0edb6d7"
}
I Suchindex für Dokument erstellen möchten „name“ und „Wert“ („name“ oder „Wert mit " nur). Ich zugegriffen diese Attribute durch diese Codes:
for (var i=0; i<doc.attributeCollection.attributeArray.length; i++) {
if (doc.attributeCollection.attributeArray[i].name) {
name = doc.attributeCollection.attributeArray[i].name;
}
if (doc.attributeCollection.attributeArray[i].value) {
value = doc.attributeCollection.attributeArray[i].value;
}
}
Es funktioniert, wenn ich contentindex = name + " "+ value
verwenden; Der Inhalt zeigt "Web Type Improper Limitation of Authentication"
. Wenn ich jedoch nur Wert contentindex = value
verwende, funktioniert es nicht, es zeigt null.
Ich weiß, dass die Struktur von "Wert" Array (Array mit 1 Element) mag und es keinen Attributnamen hat.
Wie kann ich auf den Wert richtig zugreifen?
Update:
Wenn ich Index einige Fälle, wie:
1. Es funktioniert
var content=name + " " + value; index("default", content);
2. Es funktioniert
index("default", name);
3. Es funktioniert nicht
index("default", value);
4.Ich mit festen durch den Code überarbeitet "Wert" zu erhalten:
if (doc.attributeCollection.attributeArray[i].value) {
for (var j=0; j<doc.attributeCollection.attributeArray[i].value.length; j++){
value = doc.attributeCollection.attributeArray[i].value[j];
}
}
Oder
if (doc.attributeCollection.attributeArray[i].value) {
value = doc.attributeCollection.attributeArray[i].value[0];
}
Es funktioniert wit h index("default", value);
Wenn jedoch i Permutation Funktion verwendet, wie diskutiert in this post
5. Es funktioniert
var content= permuteword(name);
for(var k=0; k<content.length; k++){
index("default", content[k], { store : true });
}
6. Es ist nicht
var content= permuteword(value);
for(var k=0; k<content.length; k++){
index("default", content[k], { store : true });
}
funktioniert 7. Es funktioniert nicht
var content=name + " " +value;
var content1= permuteword(content);
for(var k=0; k<content1.length; k++){
index("default", content1[k], { store : true });
}
Ich aktualisierte mein Thema –
Der "Wert" wird in Zeichenfolge zurückgegeben, aber warum es in Fall 6 und 7 nicht funktioniert. –
Ist "Wert" immer eine Zeichenfolge? Es wird wahrscheinlich nicht funktionieren, wenn es ein Array ist - was es sein wird, wenn Sie es auf doc.attributeCollection.attributeArray [i] .value setzen. Haben Sie Probleme, wenn Sie den Wert im Array und nicht das Array selbst verwenden? – markwatsonatx