Javascript Nodejs-extend命令不';I don’我没有按预期工作

Javascript Nodejs-extend命令不';I don’我没有按预期工作,javascript,node.js,underscore.js,extends,Javascript,Node.js,Underscore.js,Extends,我遇到了一个奇怪的情况,我一直在使用下划线中的和.extend命令,方式如下: var extended = extend({}, objA, objB); 我只从结果中的一个对象获取属性,extend是否有任何东西可能会阻止它从两个对象获取所有属性 我在任何地方都使用过这种模式,到目前为止,它似乎像预期的那样工作。两者都是普通对象,而不是数组或函数 编辑:我试图制作一个演示,但它似乎同时适用于jQuery和下划线- 在制作演示(从我在日志中打印的对象)时,我注意到在console.log中打

我遇到了一个奇怪的情况,我一直在使用下划线中的和
.extend
命令,方式如下:

var extended = extend({}, objA, objB);
我只从结果中的一个对象获取属性,extend是否有任何东西可能会阻止它从两个对象获取所有属性

我在任何地方都使用过这种模式,到目前为止,它似乎像预期的那样工作。两者都是普通对象,而不是数组或函数

编辑:我试图制作一个演示,但它似乎同时适用于jQuery和下划线-

在制作演示(从我在日志中打印的对象)时,我注意到在
console.log
中打印时,其中一个对象没有显示为字符串-它是ObjectId的mongoose类型,可能是某种原因造成了问题?(该特定字段存在于输出对象中,因此我不知道)


更新:这就是解决方案-(在mongoose查询中添加一个精简选项-因为这会使对象与下划线不兼容。

所以问题是其中一个对象是来自mongoose库的对象,它使extend命令中断,修复方法是使用精简选项从mongoose获取db对象


类似于
personModel.find({fname:“Joe”},null,{lean:true})
对于新的响应,它更适合作为Madd0g响应的注释(但我没有必要的信誉点)


您是对的,这是mongoose对象的错误,
{lean:true}
是修复它的一个选项,其他选项是调用
mongooseObj.field.toJSON()
-在某些情况下,这是一种更方便的方法。例如,如果您在控制器中有用户对象(来自auth中间件),您需要转换一些字段,然后不需要从db中重新提取模型。

将objA和objB的内容放在问题中。我将尝试构建一些复制问题的内容,我只是觉得这样做很可笑,因为这是我最不希望我的代码被破坏的地方,在我一直使用下划线库的实用程序命令上在大型网站上被测试到死亡。而extend是最流行的功能之一。所以我敢打赌extend中不会有bug。你是不是碰巧在找?
\uuuu.extend()
仅执行浅层合并,或仅执行
objA
objB
的自身属性。它不会合并它们各自可能持有的对象。objA是否可能具有与objB中相同的属性名称?在这种情况下,一个属性名称会覆盖另一个属性名称。