MongoDB / Discord.js - 检查集合的存在
Posted
技术标签:
【中文标题】MongoDB / Discord.js - 检查集合的存在【英文标题】:MongoDB / Discord.js - checking existence of a collection 【发布时间】: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 请看看我的回答。 【参考方案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。我无法更好地解释它以上是关于MongoDB / Discord.js - 检查集合的存在的主要内容,如果未能解决你的问题,请参考以下文章
不和谐机器人 |使用 discord.js 和 MongoDB 进行排名(排行榜?)系统