大家好,我正在尝试删除所有以 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
谁能帮帮我
答案 0 :(得分:0)
如果你查看 Quick.db Documentation 你会看到 .delete()
接受一个键但是 .all()
给你一个值数组,他们没有提到返回类型,在查看了source code 事实证明,您获得了以 ID 和数据为属性的对象,您可以映射 ID 并为每个对象调用删除
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
}, [])