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

使用Discord销售机器人stock命令时遇TypeError报错求助

错误原因分析
  • 触发TypeError: Cannot read properties of undefined (reading 'length')的直接原因是:db.all()返回的部分数据项中,item.data.conta属性未定义(可能是添加商品时未正确初始化conta字段,或数据被意外篡改),导致尝试读取length属性时抛出异常。
  • 现有代码仅通过db.all().length == 0判断数据库为空,但无法处理数据库有数据但部分数据结构不完整的场景。
解决方案

1. 紧急修复:安全访问属性

修改代码中生成商品列表的行,使用可选链操作符(?.)和空值合并运算符(??),确保属性不存在时不会报错,返回默认库存数0:

const itens = db.all().map(item => `ID: ${item.ID} | QUANTIDADE: ${item.data?.conta?.length ?? 0}`)
  • ?.:如果左侧属性不存在,直接返回undefined,避免抛出异常;
  • ??:仅当左侧为undefined或null时,返回右侧的默认值0,比原代码的||更严谨(不会把合法的0库存误判为"0"字符串)。

2. 根源修复:规范数据初始化

检查你的add命令代码,确保每次添加新商品时,都正确初始化conta为数组(即使初始库存为空),示例:

// 假设add命令中添加商品的逻辑
db.set(商品ID, { conta: [] }) // 确保conta字段始终是数组类型

这样能从根源避免数据库中出现结构不完整的数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 03:27:39