sql >> データベース >  >> NoSQL >> MongoDB

ExpressJSおよびNodeJSのMongooseからの応答オブジェクトのキーの並べ替え

    Expressのres.send メソッドはartistを認識します はオブジェクトであり、JSON.stringifyを呼び出します 送信する前にオブジェクトをJSON文字列に変換します。少し単純化すると、JSON.stringify メソッドはartistを反復処理します 作成された順序でのオブジェクトキー。 (より複雑な注文の説明へのリンクは次のとおりです。 )それが現在の動作を説明しています。

    他の人は、あなたが目指していることをどのように行うかについての独自の提案でチャイムを鳴らすかもしれませんが、最初に試す簡単なものがあります:

    • まず、自分で JSON.stringify「リプレース」を使用して目的の出力オーダーを作成する

      const artistString = JSON.stringify(artist, ["realName", "stageName", ...])
      // '{"realName": "Paul David Hewson", "stageName": "Bono", ...}'
      
    • 次に、res.json(artistString)を使用します 、res.sendではなく 、正しいContent-Typeを使用してJSON文字列を送信します ヘッダ。 (res.send Content-Type: “text/html”が必要であると想定します 。)

    キーを取得し、それらをソートし、置換を返す関数を作成するなど、間違いなくより複雑なアプローチがあります。または独自の.toJSON()を作成する JSON.stringifyの代わりに 。オブジェクトがネストされているため、これらのアプローチの1つを実装する必要がある場合があります。 置換の動作は少し異なる場合がありますこの場合は不安定です 。次のように、親の直後にネストされたプロパティを一覧表示できる場合があります。

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

    ただし、ネストされたプロパティの名前は同じであるため、これが機能する場合と機能しない場合があります。外側を文字列化する前に、内側を文字列化する必要があるかもしれません(gah!)。

    いずれにせよ、私の提案が最初のステップになることを願っています。




    1. mongoのトップレベルドキュメントとしての集約/プロジェクトサブドキュメント

    2. 要素の位置に基づいてmongoDBの配列要素を削除する

    3. PythonRedisからRedisDBをフラッシュするにはどうすればよいですか?

    4. 配列の少なくともN個の要素を条件のリストに一致させます