2016-10-15 1 views
0

Response.json私はモンゴデータベース内のデータを操作するために、ノードAPIを実装していた値undefinedResponse.jsonは

でフィールドを示していないが未定義の値を持つフィールドを示していません。クエリは私に右JSONを与えています。私がJSONをReactクライアントに送信すると、undefinedを含むフィールドは表示されません。私は間違って何をしていますか?回避策はありますか?

問題の範囲を絞り込むには、以下のコードをノードサーバーに追加します。 console.logは正しい出力を出力します。たとえば、status: undefinedが含まれますが、res.jsonには値がundefinedのノードは含まれません。

app.get("/test", function(req, res) { 
    let test = { 
     document: "test", 
     data: { 
      products: [ 
       { 
        id: 123, 
        type: "smartphone", 
      name: "Motorola Moto G", 
        instock: true, 
        status: undefined, 
        link: null 
       }, 
       { 
        id: 456, 
        type: "notsosmartphone", 
      name: "Samsung S7", 
        instock: false, 
        status: "burning", 
        link: undefined 
       } 
      ], 
      length: 2, 
      date_created: '20161015T09:15', 
      status: undefined, 
      person: {name: "Kathy", age: 30, cute: true}, 
      arr:[123,"abc",{"a":"1"},{"b":"2"},{"c":"3"}] 
     } 
    }; 
    console.log(test); 
    res.json(test); 
}); 

答えて

3

Expressjs response.json()方法JSONのオブジェクトを文字列に変換するuses JS JSON.stringify()方法。

JSON.stringify() explicitly removes undefined values from objectsundefined is not a valid JSON value typeと呼ばれるときはいつでも。

を使用して、undefinedの動作を明示的に無効にし、代わりにnullに値を設定すると、応答に返されます。

例:

app.set('json replacer', function (key, value) { 
    // undefined values are set to `null` 
    if (typeof value === "undefined") { 
     return null; 
    } 
    return value; 
    } 
); 
+0

はあなたフィリップをありがとう!私はそれがデータベースに格納されているようにjsonを正確に表示する必要があり、このデータの格納方法には何の影響もありません。この問題を回避する方法はありますか? –

+0

"正確にデータベースに保存されている"と "未定義"の値がある場合、それは起こりません...私が言ったように、 'undefined'は無効なJSONデータ型です –

+0

もう一度Felipe!私はこの行動が好きではありませんが、今は何が起こっているのかを少なくとも理解しています。;-)私はあなたが最良の選択肢として提案したように、置換者を使用します。 –

関連する問題