2016-05-28 21 views
0

私はexpress.jsを使用してAPIを開発しています。私はmongooseによって返されたjsonオブジェクトを持っており、結果の各要素にen要素を追加する必要があります。次のようにJSON要素が追加されていません

私はこれをやっている:

for(a in result.docs) 
    { 
     result.docs[a].links={ 
      "test":'test', 
      "test": 'test', 
      "test": 'test' 
     }; 

    } 

そうした後、私は結果オブジェクトを返しています、しかし、リンクが追加されていません。一方、書き込みを行う場合は、

console.log(result.docs[1].links); 

が正しく表示されます。

どのようなアイデアをお願いしますか?

おかげので

+0

プロパティの名前は同じです...? 'result.docs'は配列かオブジェクトですか? –

+0

プロパティの名前が違うので、データを削除するテストを書きました。 result.docsはオブジェクトの配列です – Kelly

+0

'console.log(result.docs [1] .links);もしあなたがそれを行うことができれば、それらが追加されているので、あなたは_をどういう意味ですか?あなたがconsole.log(result)またはconsole.log(result.docs [1])を実行すると、 –

答えて

0

は、おそらくあなたは、あなたが取得するtoObjectメソッドを使用することができ、その場合には、代わりにプレーンなオブジェクトのマングースのDocumentインスタンスで作業していますプレーンなオブジェクトなので、実装は次のようになります。

var objs = []; 

for(var a in result.docs) { 
    var obj = result.docs[a].toObject(); 
    obj.links = { 
     "test":'test', 
     "test": 'test', 
     "test": 'test' 
    };  
    objs.push(obj); 
} 

// Do something with objs 

toObject Documentation

+0

私は自分のコードでいくつかの間違いを犯しました。私はそれを更新しました –

+0

ありがとう、いくつかの奇妙な理由で、これは最初のいくつかの要素に追加されていません。何か案は? – Kelly

+0

ああ、私は今すぐ取得、各オブジェクトは再びドキュメントでプッシュされているので、基本的に私は同じ要素の2つのコピーを持っています - 元のものとリンクを持つもの。 objを押す前にdocs要素を空にする必要があります。ありがとうございました – Kelly

0

、このコードを試してみてください。

for each (var a in result.docs){ 
    a.links = { //put your data 
    }; 
} 
+0

これはaとして機能しません各要素のインデックス - > 0、1、2 ... – Kelly

+0

[各... for](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for_each) ... in)は償却され、firefoxでしか利用できません –

関連する問題