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

v7.1.1版本调用db.startsWith报错TypeError,请求排查代码问题

解决 TypeError: db.startsWith is not a function 问题

你遇到的这个报错原因很明确:你用的数据库库(大概率是 quick.db)在7.1.1版本里已经移除了 startsWith 这个方法,这个版本的API做了调整,废弃了这类前缀查询的快捷方法,得换个写法实现相同功能。

给你改好的代码片段,直接替换原来的部分就行:

if(args[0] == 'car') {
  // 先获取所有数据,再过滤出以 car_${服务器ID} 开头的条目,最后按data字段排序
  let cars = db.all()
              .filter(entry => entry.ID.startsWith(`car_${message.guild.id}`))
              .sort((a, b) => a.data - b.data);
  let content = "";
  
  // 注意:如果你的discord.js版本是v12及以上,client.users.get已被废弃,得用异步的fetch方法
  for (let i = 0; i < cars.length; i++) {
    try {
      const user = await client.users.fetch(cars[i].ID.split('_')[2]);
      content += `${i+1}. ${user.username} ~ ${cars[i].data}\n`;
    } catch (err) {
      // 处理用户不存在的情况,避免报错中断程序
      content += `${i+1}. 未知用户 ~ ${cars[i].data}\n`;
    }
  }
  
  // 记得把整理好的内容发送出去,比如:
  message.channel.send(content || "暂无车辆数据");
}

额外提醒两个关键细节:

  • 因为用了 await,你需要把这个命令的处理函数改成异步的,比如原来的 (message, args) => { ... } 要改成 async (message, args) => { ... }。
  • 如果你的数据库不是quick.db,原理也一样——先找当前版本里批量获取数据的方法,再自己做前缀过滤和排序即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 16:47:54