You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何使用扩展运算符返回Realm对象仅保留icons属性?

问题原因分析

核心问题出在Realm查询返回的ProjectType实例并非普通JavaScript对象,而是Realm的代理对象(Realm.Object):

  • 原代码中直接修改projectType.icons后返回原对象,此时返回的仍是Realm的代理实例。这类代理对象依赖Realm内部机制来访问所有存储的属性,所以能完整保留原有的所有键值对。
  • 改用{ ...projectType, icons }展开时,JS的展开运算符只会遍历对象自身的可枚举属性。但Realm为了性能和数据一致性,并没有将实体的所有属性暴露为普通对象的可枚举属性——大部分属性是通过Realm内部的getter/setter来访问的,无法被...运算符捕获。最终生成的普通对象就只包含icons和极少数可枚举属性,原有的其他键值对自然丢失。

如果想用展开的方式得到完整属性的普通对象,可以先调用Realm对象的toJSON()方法,将其转为标准可枚举的JS对象后再展开:

return { ...projectType.toJSON(), icons }

内容的提问来源于stack exchange,提问作者Yuval Levi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 00:12:11