sql >> Databáze >  >> NoSQL >> MongoDB

Seřadit klíče v Response Object z Mongoose v ExpressJS a NodeJS

Express' res.send metoda rozpozná tohoto artist je objekt a volá JSON.stringify na něm převést objekt na řetězec JSON před odesláním. Trochu zjednodušení, JSON.stringify metoda iteruje prostřednictvím vašeho artist objektové klíče v pořadí, v jakém byly vytvořeny. (Zde je odkaz na složitější vysvětlení objednávky. ) To vysvětluje současné chování.

Jiní se mohou připojit se svými vlastními návrhy, jak byste mohli dělat to, o co usilujete, ale nejprve si vyzkoušejte jeden jednoduchý:

  • Nejprve si udělejte vlastní JSON.stringify , pomocí "náhrady" k vytvoření požadovaného výstupního pořadí :

    const artistString = JSON.stringify(artist, ["realName", "stageName", ...])
    // '{"realName": "Paul David Hewson", "stageName": "Bono", ...}'
    
  • Poté použijte res.json(artistString) , spíše než res.send , abyste odeslali svůj řetězec JSON se správným Content-Type záhlaví. (res.send předpokládá, že chcete Content-Type: “text/html” .)

Určitě existují složitější přístupy, včetně vytvoření funkce, která získá klíče, seřadí je a vrátí náhradu; nebo napsáním vlastního .toJSON() nahraďte JSON.stringify . Možná budete muset implementovat jeden z těchto přístupů, protože máte vnořené objekty; chování náhrady může být trochu v tomto případě je neklidný . Možná budete moci vypsat vnořené vlastnosti bezprostředně za nadřazeným objektem, například:

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

ale protože máte stejné názvy pro některé vnořené vlastnosti, může nebo nemusí vám to fungovat. Možná budete muset strunovat vnitřky, než strunujete vnějšek (gah!).

V každém případě doufám, že můj návrh může být prvním krokem.




  1. Jak zkontrolovat, zda je připojení MongoDB živé v Node.js

  2. Počet záznamů PHP MongoDB

  3. Jak používat operátor $and v mongodb - ovladač java

  4. Mongoose neaktualizuje můj dokument, pokud nemám funkci zpětného volání