如何获得项目参考,以便可以在clearinventory命令中将其删除

问题描述

我正在尝试发出 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 */] }而不是字符串的对象。我假设您正在尝试删除玩家库存中的物品,在这种情况下,您可以执行以下两项操作之一:

  1. 完全删除玩家的信息。您可以通过在数据库中删除该条目来实现。如果您打算在同一条目中添加更多信息,建议改用第二个选项。
    // target.id is a string,so you can just use that here directly.
    db.delete(target.id);
  1. (仅)通过将items设置为空数组来清除玩家的库存。这利用了quick.db使用点表示法的能力。
    // <target.id>.items,e.g. 1234567890987543212.items
    db.set(`${target.id}.items`,[]);