2017-08-09 13 views
-2

複数のjsonオブジェクトがあります。すべてのオブジェクトを1つのJSON配列にマージする必要があります。2つのJSONオブジェクトまたは配列をマージできません

これらは私がNPMによってマージ使用ここ

[ { client_name: 'ESAF', 
b_code: '244_ADOOR', 
b_address: 'erehd', 
b_phone: 'fhdfh', 
b_tp: 'dfh', 
b_tp_phone: 'dfhdfdfh', 
b_m: 'dfhdsfh' } ] 

[ { r_name: 'N E-UPBR CPE', 
r_serial_no: '345324534534534', 
available: 'dispatched' }, 
{ r_name: 'N E-UPBR CPE', 
r_serial_no: '345435', 
available: 'dispatched' } ] 

、私の2つのJSON配列です。 ここで私はどのように

console.log(merge(b_data, r_data[1])); //THIS IS WHAT I NEED 

結果、

{ r_name: 'N E-UPBR CPE', 
    r_serial_no: '345435', 
    available: 'dispatched' } 

{ client_name: 'ESAF', 
    b_code: '244_ADOOR', 
    b_address: 'erehd', 
    b_phone: 'fhdfh', 
    b_tp: 'dfh', 
    b_tp_phone: 'dfhdfdfh', 
    b_m: 'dfhdsfh', 
    r_name: 'N E-UPBR CPE', 
    r_serial_no: '345324534534534', 
    available: 'dispatched' } 

が、これをやって、その後、私は以下の結果を得た

console.log(merge({ client_name: 'ESAF', 
            b_code: '244_ADOOR', 
            b_address: 'erehd', 
            b_phone: 'fhdfh', 
            b_tp: 'dfh', 
            b_tp_phone: 'dfhdfdfh', 
            b_m: 'dfhdsfh' }, { r_name: 'N E-UPBR CPE', 
            r_serial_no: '345324534534534', 
            available: 'dispatched' })); 

、それを手動でマージそれを得る本当に?または私のコードに何が間違っていますか?

これは私がやっているものです、Object.assignを使用して enter image description here

+0

「マージ」とは何ですか? – hjpotter92

+0

['Object.assign()'](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)を使用するだけではどうですか? 'r_data [1]'とは何ですか?これは「配列」を暗示し、2番目のインデックスを探しているようです。あるいは、実際には「最初の」インデックスを意味し、「n-1」という概念全体を見逃していますか?あなたの質問から無関係のタグをすべて取り除いてください。これらは「JavaScriptオブジェクト」です。 JSONは別のものです。質問は、使用中のスタック全体ではなく、自分のタグ付けされていることを意味します。 –

+0

ええ、私はそれを意味する、私は2番目のインデックスが必要です。私はObject.assignを試しましたが、運はありません。私のコードが間違っているかどうかわかりません! – AnonymousObject

答えて

0

を、私は答えを得た、

問題はマングースのリターン結果であります。結果は、彼がなぜObject.assign(..)が間違ったデータを返すのかというjson形式のものではありません! これを行うには、単にMongooseの返信結果を.toObject()に変換します。

ie。

Branch.find({b_code: branch_name},{_id: 0,__v:0},function (err,b_data) { 
      Router.find({r_serial_no: serial},{_id: 0,__v:0},function (err,r_data) { 
       DataCard.find({d_serial_no: data_card_serial},{_id: 0,__v:0},function (err,d_data) { 
        Sim.find({sim_number: sim_number},{_id: 0,__v:0},function (err,s_data){ 
         Modem.find({m_serial_no: modem_serial},{_id: 0,__v:0},function (err,m_data) { 
          Idu.find({idu_serial_no: idu_serial},{_id: 0,__v:0},function (err,i_data) { 
           var data=[]; 
           for(var item in b_data){ 
            data.push(Object.assign({}, b_data[item].toObject(), r_data[item].toObject(), d_data[item].toObject() 
             , s_data[item].toObject(), m_data[item].toObject(), i_data[item].toObject(), ip_address, 
             installed_date, notes, ir_report)); 
           } 
           console.log(data); 
           res.render('index', {dispatched_data:data}); 
1

が働いた:

b_data = { 
 
    client_name: 'ESAF', 
 
    b_code: '244_ADOOR', 
 
    b_address: 'erehd', 
 
    b_phone: 'fhdfh', 
 
    b_tp: 'dfh', 
 
    b_tp_phone: 'dfhdfdfh', 
 
    b_m: 'dfhdsfh' 
 
} 
 

 
r_data = [{ 
 
    r_name: 'N E-UPBR CPE', 
 
    r_serial_no: '345324534534534', 
 
    available: 'dispatched' 
 
}, { 
 
    r_name: 'N E-UPBR CPE', 
 
    r_serial_no: '345435', 
 
    available: 'dispatched' 
 
}] 
 

 
console.log(Object.assign({}, b_data, r_data[1]))

+0

ない仲間ですが、私はそれにいくつかのジャンクデータを得た0} 、 shardval:未定義、 saveError:未定義、 ValidationErrorを:未定義のは、 adhocPaths:未定義、 が、両方のオブジェクトは – AnonymousObject

+0

が所定の位置に上記のスニペットを実行し、スクリーンショットを提供@AnonymousObjectそれに含まれていますか? – hjpotter92

+0

残念ながら、手作業で行うことで、jsonオブジェクトを明示的に書くことを意味します。実際には、私のjsonオブジェクトは、mongooseスキーマの結果からです。 ルータ。検索({r_serial_no:serial}、{_ id:0、__ v:0}、関数(err、r_data){...} – AnonymousObject

関連する問題