2017-08-09 84 views
-2

我有多个json对象,我需要的是将所有对象合并到一个JSON数组中。无法合并两个JSON对象或数组

这些都是我的两个JSON数组,

[ { 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' } ] 

这里我用NPM合并。 这里我手动将其合并,

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' })); 

然后我得到了以下的结果,

{ 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(b_data, r_data[1])); //THIS IS WHAT I NEED 

结果,

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

如何得到它更正ectly?或者我的代码有什么问题?

这是我在做什么, enter image description here

+0

什么是“合并”? – hjpotter92

+0

为什么不使用['Object.assign()'](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)?什么是'r_data [1]'?这似乎意味着一个“阵列”,并寻找第二个索引。或者你是否真的是指“第一”索引并且错过了“n-1”的整个概念?同时剥离您的问题中所有不相关的标签。这些是“JavaScript对象”。 JSON是另一回事,问题的意思是标记它们的内容,而不是整个使用的堆栈。 –

+0

是的,我的意思是,我只需要第二个索引。我试过Object.assign,但没有运气。我不知道我的代码是否错误! – AnonymousObject

回答

0

我得到了答案,

问题是猫鼬返回结果。结果是不是在JSON格式这就是为什么他Object.assign(..)返回错误的数据! 这样做只是将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

使用Object.assign工作:

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

无兄弟,我买了它的一些垃圾数据:P 像: '$ __': InternalCache { strictMode:真实, 选择:{_id:0,__v:0} , shardval:未定义, saveError:未定义, validationError:未定义, adhocPaths:不确定,但 两个物体都包含在里面 – AnonymousObject

+0

@AnonymousObject到位运行上面的代码片段,并提供屏幕截图? – hjpotter92

+0

对不起兄弟,通过手动它的工作..我的意思是明确写json对象它的作品。实际上我的json对象是从猫鼬模式结果。 路由器。find({r_serial_no:serial},{_ id:0,__ v:0},function(err,r_data){...} – AnonymousObject