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

TypeScript中读取对象_id属性返回undefined的问题求助

无法读取对象单个属性的问题排查及解决

问题核心原因

你的代码存在一个关键错误:

const user_:SINGLEUSER = JSON.stringify(user) as unknown as SINGLEUSER

JSON.stringify(user)会把对象转换成JSON格式的字符串,而非保留原对象结构。虽然TypeScript的类型断言让它看起来是SINGLEUSER类型,但本质上user_是一个字符串。字符串本身没有_id属性,所以user_._id返回undefined;而直接打印字符串时,控制台显示的JSON格式内容视觉上和对象相似,才造成了“对象存在属性但读不到”的错觉。

解决方案

根据user的实际类型选择对应方案:

方案1:原user已是符合结构的对象

直接移除JSON.stringify,仅保留必要的类型断言(如果需要):

const user_: SINGLEUSER = user as unknown as SINGLEUSER;

如果user的类型本身兼容SINGLEUSER,甚至可以省略类型断言。

方案2:原user是JSON字符串(此场景下大概率不适用)

如果user本身是JSON格式的字符串,需要用JSON.parse将其转换为对象:

const user_: SINGLEUSER = JSON.parse(user) as unknown as SINGLEUSER;

修正后的完整代码示例

interface SINGLEUSER  {
 _id:string,
 name:string,
 email:string,
 image:string,
 emailVerified: any
}

console.log("UPDATE" )

// 修正:直接使用原对象,避免不必要的字符串转换
const user_:SINGLEUSER = user as unknown as SINGLEUSER

console.log(user_._id) // 现在会输出正确的_id值
console.log(user_)
console.log(account!!.provider)

await User_.findOneAndUpdate({_id:user_._id },{provider: account!!.provider})

console.log("UPDATED" )

修改后,user_会是真正的对象,能够正常读取_id属性,数据库更新操作也能正确执行。

内容的提问来源于stack exchange,提问作者Captai-N

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 05:05:18