节点不打印完整的对象

我很难过

我用控制台中包含嵌套数组的另一个对象testing了这个方法,并得到了预期的结果

db_status_emitter.on("components_found", function (returned_item) { //console.log(returned_item); prun_item.type = returned_item.type; prun_item.components = returned_item.components.slice(0); switch (prun_item.type) { case "one-sided-mattress": prun_item.quantity = prun_item.total_panel_quantity; var top_panel = underscore.find(prun_item.components, function (element) { return element.component_category == "top-panel" }); var border = underscore.find(prun_item.components, function (element) { return element.component_category == "border" }); top_panel.quantity = border.quantity = prun_item.quantity; top_panel.style = "91000000"; border.style = "81000000"; break; case "two-sided-mattress": prun_item.quantity = prun_item.total_panel_quantity / 2; var top_panel = underscore.find(prun_item.components, function (element) { return element.component_category == "top-panel" }); var bottom_panel = underscore.find(prun_item.components, function (element) { return element.component_category == "bottom-panel" }); var border = underscore.find(prun_item.components, function (element) { return element.component_category == "border" }); top_panel.quantity = bottom_panel.quantity = border.quantity = prun_item.quantity; top_panel.style = "91000000"; bottom_panel.style = "92000000"; border.style = "81000000"; break; default: console.error("error with prun Schedule"); break; } console.log(prun_item); }); 

// 编辑 :我应该在这里添加mongoose的电话; 它和.on()函数在同一个范围内

 fex_model.findOne({_id: prun_item.model}, {components: 1, type: 1, _id: 0}, function (err, returned_item){ if (err) db_status_emitter.emit("error", err) db_status_emitter.emit("components_found", returned_item); }) 

为什么没有一个组件显示我给它们添加的键值对呢? 这是一个输出示例

 { quilter_name: 'Panel Quilter #3', schedule_no: 55f32e4470df49a65d03cf6a, model: '3630', size: '66', total_panel_quantity: 72, type: 'two-sided-mattress', components: [ { component_category: 'top-panel', buffer_op: '120' }, { component_category: 'bottom-panel', buffer_op: '120' }, { component_category: 'border', buffer_op: '119' } ], quantity: 36 } 

但应该是:

 { quilter_name: 'Panel Quilter #3', schedule_no: 55f32e4470df49a65d03cf6a, model: '3630', size: '66', total_panel_quantity: 72, type: 'two-sided-mattress', components: [ { component_category: 'top-panel', buffer_op: '120', quantity: 36, style: "91000000" }, { component_category: 'bottom-panel', buffer_op: '120', quantity: 36, style: "92000000" }, { component_category: 'border', buffer_op: '119', quantity: 36, style: "81000000" } ], quantity: 36 } 

但为什么在控制台上的相同的过程工作?

 >underscore.extend(extended_this_object, components_wrapper); { foo: 'bar', components: [ { a: 'findthis', b: '3', c: '4', d: 'new value' }, { a: 'notthis', b: '4', c: '5' } ] } >var foundthis2 = underscore.find(extended_this_object.components, function(element){ return element.a == 'findthis'}); >foundthis2 { a: 'findthis', b: '3', c: '4', d: 'new value' } >foundthis2.e = 'a newer value' 'a newer value' >extended_this_object; { foo: 'bar', components: [ { a: 'findthis', b: '3', c: '4', d: 'new value', e: 'a newer value' }, { a: 'notthis', b: '4', c: '5' } ] } 

编辑这里是一个单一的组件键输出..我怀疑它必须做它来自mongoose…

 [ '__parentArray', '__parent', '__index', '$__', 'isNew', 'errors', '_doc', '$__original_save', 'save', '_pres', '_posts', 'quantity', 'style' ] 

请注意,数量和样式是属于它们自己的,我怀疑logging的属性在_doc中。

起初我以为这是一个有趣的问题,但后来我意识到这是没有意义的。 我试着做一个js文件中的各种类似的东西,并node ,但我不能复制你遇到的。

日志消息不是来自console.log ,或者在重新启动服务器后无法复制此问题(V8中出现了一些问题?)。

你有没有尝试改变日志arugment像prun_item.components[0].quantity

或者你的原始代码比这更复杂,修改_.find返回的对象不会修改你的console.log对象,这是唯一合乎逻辑的解释。