我遇到了一个奇怪的情况,我一直在使用下划线的extend library和_.extend
命令,方法如下:
var extended = extend({}, objA, objB);
我只从结果中的一个对象获取属性,是否有任何关于扩展的内容可能阻止它从两个对象获取所有属性?
我到处都使用过这种模式,到目前为止似乎按预期工作了。两者都是普通对象,而不是数组或函数。
编辑:我尝试制作演示,但它似乎适用于jQuery和下划线 - http://jsfiddle.net/x4UHQ/2/
在制作演示时(从我在日志中打印的对象),我注意到在console.log
中打印时没有显示为字符串 - 它是一个猫鼬类型的ObjectId,可能是因为某种程度导致了问题? (该特定字段存在于输出对象中,所以我不知道)
更新:这是解决方案 - UnderscoreJS wont extend object(为mongoose查询添加精简选项 - 因为这会使对象与下划线不兼容。
答案 0 :(得分:1)
很抱歉新的回复,它最适合作为Madd0g回复的评论(但我没有必要的声望点)。
你是对的,它是mongoose对象的错,{lean: true}
是一个修复它的选项,其他选项是调用mongooseObj.field.toJSON()
- 在某些情况下它是更方便的方法。例如,如果您在控制器中有用户对象(来自auth中间件),并且您需要转换某些字段,那么您不需要从db重新获取模型。
答案 1 :(得分:0)
所以问题是其中一个对象是来自mongoose库的对象,它使扩展命令中断,修复是通过lean选项从mongoose获取db对象。
类似于personModel.find({fname: "Joe"}, null, { lean: true })