为何foundObj._id显示为undefined?MongoDB文档ID异常排查
排查
foundObj._id 为 undefined 的原因 以下是几种常见的排查方向:
未找到匹配的加密货币对象
Array.find()方法如果遍历完数组没找到符合条件的项,会直接返回undefined。这时候访问foundObj._id自然会得到undefined。建议在代码里先加个校验:let foundObj = this.Cryptos.find(x => x.name === name); if (!foundObj) { console.log(`找不到名称为 ${name} 的加密货币`); return; }前端存储的加密货币对象无
_id字段
检查后端返回的加密货币数据结构,确认是否正确返回了 MongoDB 的_id字段。有可能后端接口在响应时遗漏了该字段,或者把字段名写成了id(而非 MongoDB 默认的_id)。可以在控制台打印this.Cryptos,查看每个对象的具体属性。名称匹配存在精度问题
核对传入的name参数和this.Cryptos中对象的name是否完全一致,比如大小写、空格、特殊符号这些细节。举个例子:后端返回的名称是"Ethereum",但调用deleteCrypto时传入的是"ethereum",find()就会匹配失败,导致foundObj为undefined。异步数据加载未完成
如果this.Cryptos是通过getCryptos()这类异步请求加载的,可能在调用deleteCrypto时,数据还没加载完毕,this.Cryptos还是空数组或不完整的数组。这种情况下find()找不到目标对象,foundObj._id就会是undefined。可以在调用删除方法前,先确认数据已经加载完成(比如加个加载状态判断)。
内容的提问来源于stack exchange,提问作者lei
相关产品推荐
相关产品推荐

