MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Sortuj klucze w obiekcie odpowiedzi z Mongoose w ExpressJS i NodeJS

Express' res.send metoda rozpoznaje, że artist jest obiektem i wywołuje JSON.stringify na nim, aby przekonwertować Object na ciąg JSON przed wysłaniem. Upraszczając nieco, JSON.stringify metoda iteruje przez Twojego artist klucze obiektów w kolejności ich utworzenia. (Oto link do bardziej skomplikowanego wyjaśnienia kolejności. ) To wyjaśnia obecne zachowanie.

Inni mogą przyłączyć się do swoich własnych propozycji, w jaki sposób możesz zrobić to, do czego dążysz, ale najpierw wypróbuj jedną prostą:

  • Najpierw zrób własne JSON.stringify , używając „zamiennika” do utworzenia żądanej kolejności wyjściowej :

    const artistString = JSON.stringify(artist, ["realName", "stageName", ...])
    // '{"realName": "Paul David Hewson", "stageName": "Bono", ...}'
    
  • Następnie użyj res.json(artistString) , a nie res.send , aby wysłać ciąg JSON z poprawnym Content-Type nagłówek. (res.send założymy, że chcesz Content-Type: “text/html” .)

Są zdecydowanie bardziej skomplikowane podejścia, w tym tworzenie funkcji, która pobiera klucze, sortuje je i zwraca zamiennik; lub napisanie własnego .toJSON() zastąp JSON.stringify . Może być konieczne zaimplementowanie jednego z tych podejść, ponieważ masz zagnieżdżone obiekty; zachowanie zamiennika może być trochę chwiejny w tym przypadku . Możesz mieć możliwość wyświetlenia zagnieżdżonych właściwości bezpośrednio po rodzicu, na przykład:

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

ale ponieważ masz te same nazwy dla niektórych zagnieżdżonych właściwości, może to działać lub nie. Być może będziesz musiał napiąć wnętrze, zanim naciągniesz zewnętrze (gah!).

W każdym razie mam nadzieję, że moja sugestia może być pierwszym krokiem.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb:czy powinienem zawsze używać opcji „bezpieczne” przy aktualizacjach

  2. Jak przekonwertować zapytanie agregujące MongoDB na Laravel MongoDB autorstwa jenssegers

  3. Czy podczas zabezpieczania formularza komentarza i powiązanego punktu końcowego interfejsu API dane wejściowe powinny być oczyszczone, zweryfikowane i zakodowane w przeglądarce, serwerze, czy w obu?

  4. Wyszukiwanie pełnotekstowe MongoDB ze sterownikiem haskell

  5. Słaba wydajność agregacji wyszukiwania