Nodejs - extend命令无法按预期工作

时间:2014-03-14 18:06:16

标签: javascript node.js underscore.js extends

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

var extended = extend({}, objA, objB);

我只从结果中的一个对象获取属性,是否有任何关于扩展的内容可能阻止它从两个对象获取所有属性?

我到处都使用过这种模式,到目前为止似乎按预期工作了。两者都是普通对象,而不是数组或函数。

编辑:我尝试制作演示,但它似乎适用于jQuery和下划线 - http://jsfiddle.net/x4UHQ/2/

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

更新:这是解决方案 - UnderscoreJS wont extend object(为mongoose查询添加精简选项 - 因为这会使对象与下划线不兼容。

2 个答案:

答案 0 :(得分:1)

很抱歉新的回复,它最适合作为Madd0g回复的评论(但我没有必要的声望点)。

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

答案 1 :(得分:0)

所以问题是其中一个对象是来自mongoose库的对象,它使扩展命令中断,修复是通过lean选项从mongoose获取db对象。

类似于personModel.find({fname: "Joe"}, null, { lean: true })