sql >> Database teknologi >  >> NoSQL >> MongoDB

Sorter nøgler i svarobjekt fra Mongoose i ExpressJS og NodeJS

Express' res.send metode genkender den artist er et objekt og kalder JSON.stringify på den for at konvertere objektet til en JSON-streng før afsendelse. For at forenkle en smule, JSON.stringify metode itererer gennem din artist objektnøgler i den rækkefølge, de blev oprettet. (Her er et link til den mere komplicerede bestillingsforklaring. ) Det forklarer den nuværende adfærd.

Andre kan komme med deres egne forslag til, hvordan du kan gøre det, du sigter efter, men her er et simpelt forslag først:

  • Gør først dit selv JSON.stringify , ved at bruge en "erstatter" til at oprette den outputrækkefølge, du ønsker :

    const artistString = JSON.stringify(artist, ["realName", "stageName", ...])
    // '{"realName": "Paul David Hewson", "stageName": "Bono", ...}'
    
  • Brug derefter res.json(artistString) , i stedet for res.send , for at sende din JSON-streng med den korrekte Content-Type header. (res.send vil antage, at du vil haveContent-Type: “text/html” .)

Der er helt sikkert mere komplicerede tilgange, herunder oprettelse af en funktion, der henter nøgler, sorterer dem og returnerer en erstatning; eller skriv din egen .toJSON() erstatte JSON.stringify . Du skal muligvis implementere en af ​​disse fremgangsmåder, fordi du har indlejrede objekter; erstatningens adfærd kan være en smule skævt i dette tilfælde . Du kan muligvis vise de indlejrede egenskaber umiddelbart efter forælderen, f.eks.:

["realName", "type", ...]

men da du har de samme navne for nogle indlejrede egenskaber, fungerer dette muligvis ikke for dig. Du skal muligvis strenge indersiden, før du strenger ydersiden (gah!).

Under alle omstændigheder kan mit forslag forhåbentlig være et første skridt.




  1. Elementet 'id' matcher ikke noget felt eller egenskab af fejl med indlejrede klasser

  2. pymongo kan ikke oprette forbindelse til databasen på fjernserveren

  3. Hvordan forespørges træstruktur rekursivt med MongoDB?

  4. Hvordan får man indsamling af et dokument fra mongodb cursor?