问题描述
我正在尝试发出 clearinventory 命令,以便它通过提及删除玩家的库存,或者如果没有提及,它将删除您自己的库存,但是我不断收到称为 RangeError的错误:提供的参数值太多,这是代码:
const db = require('quick.db');
const discord = require('discord.js');
module.exports = {
name: "clearinventory",descrition: "clear a players inventory",async run(client,message,run) {
let target = message.mentions.users.first() || message.author;
let items = await db.fetch(target.id,{
items: []
});
if (!message.member.hasPermission("ADMINISTRATOR")) return message.channel.send('You can\'t use that!')
db.delete(items);
message.channel.send(`${target}\'s inventory was successfully cleared!`)
}
}
我尝试在变量项目中指定项目,也尝试在db.delete(items,'car')
中指定项目,但这没有用
解决方法
我正在查看此内容,而没有引起问题的任何上下文。
db.delete
使用第一个参数的字符串,该字符串是您设置的数据的密钥(目标的用户ID)。在这种情况下,您要传递items
,它实际上是格式为{ items: [/* items */] }
而不是字符串的对象。我假设您正在尝试删除玩家库存中的物品,在这种情况下,您可以执行以下两项操作之一:
- 完全删除玩家的信息。您可以通过在数据库中删除该条目来实现。如果您打算在同一条目中添加更多信息,建议改用第二个选项。
// target.id is a string,so you can just use that here directly.
db.delete(target.id);
- (仅)通过将
items
设置为空数组来清除玩家的库存。这利用了quick.db使用点表示法的能力。
// <target.id>.items,e.g. 1234567890987543212.items
db.set(`${target.id}.items`,[]);