Node.js中用扩展运算符为对象加属性出现多余属性如何解决?
问题解答
错误原因
- 你之前使用的
Object.assign和错误的扩展运算符写法,都是将message对象的所有顶层属性平铺合并到conversation的根层级,不仅无法把整个message作为单独属性挂载,还会因为两个对象都存在_id字段,导致conversation原有的_id被覆盖。 - 首次使用扩展运算符时属性名拼写错误,写的是复数
messages,实际需求的属性名为单数message。
正确实现方案
方案1:直接修改原conversation对象
如果不需要保留原conversation对象的内容,直接追加属性即可:
conversation.message = message; // 此时conversation对象已经符合预期结构
方案2:生成新对象(不修改原对象)
使用扩展运算符实现:
const new_object = { ...conversation, message // 此处为属性名和变量名一致的简写,等价于 message: message };
使用Object.assign实现:
const new_object = Object.assign({}, conversation, { message });
内容的提问来源于stack exchange,提问作者Nurul Islam
相关产品推荐
相关产品推荐

