2017-07-10 1 views
0

Ich habe eine Bibliothek mit FAQs, die am Frontend in Tabs aufgeteilt sind. Seither haben wir eine NodeJS-App entwickelt, mit der wir eine Datenbank mit FAQs anstelle von hartkodiertem HTML erstellen können .Vorbereiten von NodeJS DB-Inhalten zur Verwendung in Moustache

Ich habe ein NodeJS Modell eine JSON-Datei zu erzeugen, die auf die Fragen ihrer Registerkarte Assoziation mit dem folgenden filtert:

res = _.groupBy(res, 'tab_title'); 

Welche this ausgibt.

jedoch unten ist die Struktur der ursprünglichen JSON-Datei, die der Schnurrbart-Tags in der Vorlage es erwarten aussehen: can

{ 
"tabs": [ 
    { 
     "title": "Tab title", 
     "id": 1, 
     "questions": [ 
      { 
       "question": "Question here", 
       "id": 1, 
       "answer": "Answer here" 
      }, 
      { 
       "question": "Question two", 
       "id": 2, 
       "answer": "Answer here" 
      } 
     ] 
    }, 
    { 
     "title": "Another title", 
     "id": 2, 
     "questions": [ 
      { 
       "question": "Question here", 
       "id": 1, 
       "answer": "Answer here" 
      }, 
      { 
       "question": "Question two", 
       "id": 2, 
       "answer": "Answer here" 
      } 
     ] 
    } 
} 

Dies ist, so dass die Front-End-Tags über die Laschen nur Schleife, Schließe dann die Fragen innerhalb der Tabs ab, so dass das Frontend relativ automatisiert ist.

Ich habe versucht, die _.map Funktion zu verwenden, um alle geeigneten Informationen in dieser Struktur auszugeben, aber ich habe wirklich Probleme. Kann mir jemand in eine Richtung zeigen, die helfen könnte?

Ich hoffe, das ist genug Informationen, aber wenn nicht, kann ich mehr liefern.

Danke!

Antwort

0

Also beginnen wir mit der Generierung der Gruppen wie Sie es getan haben.

_.groupBy(myArray, 'tab_title'); 

Allerdings löst das unser Problem hier nicht ganz, das Objekt wird immer noch nicht der beabsichtigten Struktur entsprechen. Es wird wie folgt aussehen:

{ 
    "tab_title1" : [{...}, {...}], 
    "tab_title2" : [{...}, {...}] 
} 

So konnten wir die Map-Funktion verwenden, um dies weiter zu verarbeiten:

_.map(groupObject, (lstFaqs, tab_title) => { 
    let first = _.first(lstFaqs), 
     tab_object = { 
      title: first.tab_title, 
      id: first.tab_id, 
      questions: _.map(lstFaqs, (faqItem) => { 
       id: faqItem.faq_id, 
       question : faqItem.faq_question, 
       answer : faqItem.faq_answer 
      }) 
     } 

    return tab_object; 
}) 

Wir werden mit einer Reihe von tab_object enden. Um die Formatierung abzuschließen:

let result = { "tabs" : array_of_tab_object } 

Ich hoffe, diese Hilfe!

Verwandte Themen