大家好,我正在尝试删除所有以开头的数据 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
谁能帮帮我
大家好,我正在尝试删除所有以开头的数据 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
谁能帮帮我
如果您查看Quick.db 文档,您将看到它.delete()
接受一个键但.all()
给您一个值数组,它们没有提及返回类型,在查看源代码后发现您获得的对象的 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
}, [])