【问题标题】:MongoDB / Discord.js - checking existence of a collectionMongoDB / Discord.js - 检查集合的存在
【发布时间】:2020-08-31 13:39:29
【问题描述】:

我用 MongoDB 创建了一个不和谐的机器人,并创建了一个命令来修改我的机器人商店中的一篇文章。 在修改特定文章之前,它必须已经在数据库中找到。是否可以查明在命令中键入的名称是否存在于数据库中?如果不存在,则返回错误消息。

    if(!oldName) return message.channel.send('<:croix:704272420873306165> You must indicate the name of your article')

    if(!newName) return message.channel.send('<:croix:704272420873306165> You must indicate the new name for your article')

    if() return message.channel.send('<:croix:704272420873306165> The name of the item doesn\'t exist.')

    await serverDB.set(message.guild.id, { $rename: { [ 'modules.SHOPECO.' + oldName ] : 'modules.SHOPECO.' + newName } })

    await serverDB.set(message.guild.id, { $set: { [ 'modules.SHOPECO.' + `${newName}.NAME` ] : newName } })

    message.channel.send("Good !")

【问题讨论】:

  • 告诉我们你到目前为止做了什么?你卡在哪里了?
  • 你在用猫鼬吗?
  • @Syntle 是的,我正在使用猫鼬
  • @SamimHakimi 我给你看了我上面的程序,第三个条件是空的,因为这就是我要问你的问题
  • @Cyra 请看看我的回答。

标签: mongodb mongoose discord.js


【解决方案1】:

您可以为此使用Model.findOne()。我不再建议 Model.exists() 的原因是,根据这个答案的 cmets,您正在尝试查询多个条件,您可以使用 findOne() 保持简单

ArticleModel.findOne({ id: message.guild.id }, (err, res) => {
  if (res.modules.SHOPECO.includes(args[0]) return message.reply('that article already exists!')
})

【讨论】:

  • zupimages.net/up/20/20/5g1o.gif 而不是“articleName”,我输入了['modules.SHOPECO'],但它不起作用(Cyra 是文章的名称)。还考虑到不和谐服务器 ID
  • SHOPECO 是您的型号名称吗?如果是这样,那么做SHOPECO.exists()
  • 不,我说的不是型号,而是“文章名称”,serverDB.exists(message.guild.id, { ['modules.SHOPECO.' + oldName]: " " } 看看我发送的图片的链接
  • 您的查询没有意义,您需要像使用find()findOne() 一样使用exists()。为什么你有message.guild.id 在那里?给我一个你在modules.SHOPECO下寻找的确切例子,我会帮你查询
  • 如果有意义的话,每个服务器都有一个id,因此有自己的数据,要知道它是否存在,数据库必须进入有问题的服务器的数据,否则它将无法工作,这就是我输入message.guild.id 的原因。在照片上,您在modules.SHOPECO 中看到“Cyra: Object”,我只想在我们键入命令时执行此操作,如果它出现在modules.SHOPECO 中,则为 0。我无法更好地解释它
猜你喜欢
  • 2022-01-26
  • 2015-11-01
  • 2018-02-27
  • 2016-08-17
  • 1970-01-01
  • 2014-06-30
  • 2018-08-11
  • 1970-01-01
  • 2021-08-26
相关资源
最近更新 更多