【问题标题】:delete all the data that start with the same key from the database "quick.db"从数据库“quick.db”中删除所有以相同键开头的数据
【发布时间】:2021-04-08 06:22:41
【问题描述】:

大家好,我正在尝试删除所有以 modapp_${message.guild.id}开头的数据

我尝试使用:

let money = db.all().filter(a => a.ID.startsWith(`modapp_${message.guild.id}`))
db.delete(money)

但它给了我这个错误 SQLite3 can only bind numbers, strings, bigints, buffers, and null

谁能帮帮我

【问题讨论】:

    标签: discord.js quick.db


    【解决方案1】:

    如果您查看Quick.db Documentation,您将看到.delete() 接受一个键,但.all() 为您提供了一个值数组,它们没有提及返回类型,在查看source code 后发现如果您获得具有 ID 和数据作为属性的对象,您可以映射 id 并为每个对象调用 delete

    let money = db.all()
      .map(entry => entry.ID)
      .filter(id => id.startsWith(`modapp_${message.guild.id}`))
    
    money.forEach(db.delete)
    

    或者,您可以使用 Array#reduce 仅循环一次,将其作为替代方案提及,否则您将循环 3 次

    let money = db.all().reduce((acc, val) => {
      if (val.ID.startsWith(`modapp_${message.guild.id}`)) {
        acc.push(val.ID)
      }
    
      return acc
    }, [])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-10
      • 1970-01-01
      • 1970-01-01
      • 2018-03-07
      • 2017-06-30
      • 2012-05-22
      • 2018-09-15
      相关资源
      最近更新 更多