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

如何在quick.db中获取所有车辆fuel键对应的存储值列表

问题根因

你调用db.set(fuel_${car}, 燃油量)存储数据时,quick.db会将每一条fuel_车辆标识作为独立的顶级键存储,数据库中不存在名为fuel的顶级键,因此直接执行db.get('fuel')无法获取到任何关联数据。

解决方案

方案1:调整存储结构(推荐,长期使用性能更好)

  • 存储燃油数据时,不要将不同车辆的燃油拆分为独立顶级键,统一归到fuel对象下存储,存储代码修改为:
// 为指定车辆存储燃油量
db.set(`fuel.${car}`, 燃油量);
// 示例:给标识为lol9的车辆存100单位燃油:db.set(`fuel.lol9`, 100)
  • 调整后直接使用你原有逻辑中的db.get('fuel')即可获取全量车辆燃油数据,返回值为{ 车辆标识1: 燃油量1, 车辆标识2: 燃油量2 }格式的对象,可直接遍历使用。

方案2:兼容已有fuel_前缀的存量数据

如果你已经存储了大量fuel_开头的独立数据,不想调整原有存储逻辑,可以通过db.all()拉取全库数据后过滤出目标条目,代码如下:

client.on('message', async message => {
  if(message.content === 'db') {
    // 拉取数据库所有存储条目
    const allEntries = await db.all();
    // 过滤、整理所有车辆燃油数据
    const fuelList = allEntries
      .filter(entry => entry.ID.startsWith('fuel_'))
      .map(entry => ({
        car: entry.ID.slice(5), // 截掉前缀fuel_,得到车辆标识
        fuel: entry.data
      }));
    // fuelList即为全量车辆燃油列表,格式为[{car: '车辆标识', fuel: 对应燃油量}, ...]
    message.channel.send(JSON.stringify(fuelList));
  }
})

注意:如果数据库存储的条目总量很大,方案2需要遍历全库数据,性能会明显差于方案1,生产环境优先选择方案1的存储结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 21:27:17