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

Mongoose调用findOne无法获取集合子文档除_id外其余属性问题

解决步骤

  • 核对访问路径
    你当前返回的用户数据根节点本身就存在address字段,值为Parcelle Assainies,而structure对象中未包含address属性,先确认是否写错了访问路径,把item.address误写为item.structure.address。
  • 核对IStructure定义
    你提供的代码中仅声明了IUser、ISubscription接口,未给出IStructure的定义:
    • 检查IStructure接口中是否声明了address等需要访问的字段,TS接口未声明的字段访问时会返回null/undefined
    • 检查对应的Mongoose StructureSchema中是否定义了对应字段,Mongoose会默认过滤Schema中未声明的字段,哪怕数据库中实际存储也无法正常获取
  • 检查关联查询配置
    如果你的structure是关联的独立集合而非内嵌子文档:
    • 查询时需要增加populate配置才能拉取关联集合的完整字段,将查询语句修改为user.findOne({_id: id}).populate('structure')即可
    • 若已经添加了populate,检查是否手动限制了返回字段,比如写为populate('structure', '_id'),删除多余的字段限制即可
  • 检查数据库实际存储
    直接连接MongoDB查询对应structure._id的文档,确认数据库中是否实际存储了address等字段,若数据库本身未存储对应值,访问自然返回null
  • 检查序列化规则
    若你在接口返回前做了序列化处理,检查是否有全局或字段级的过滤规则,将structure的非_id字段过滤掉了,比如class-transformer的@Exclude注解、返回前手动删除字段的逻辑等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:45:01