FindOne 没有正确找到数组中的项目 discordjs

Posted

技术标签:

【中文标题】FindOne 没有正确找到数组中的项目 discordjs【英文标题】:FindOne not finding item in array properly discordjs 【发布时间】:2021-07-30 15:13:15 【问题描述】:

我试图在用户的项目数组中找到一个项目,他的 id 不和谐。我有这个

        const data = inv.findOne(User: message.author.id)
        if(!data) 
            return message.reply("You own no items. Buy something to trade")
        
        if(item === 'hat') 
           const itemfound =  data.find(User: message.author.id, Items: '????Hat')
           if(itemfound) 
               return message.reply("FOund!")
           
        

但是当我的项目数组中没有该项目时,它会不断返回

【问题讨论】:

【参考方案1】:

假设inv 是一个模型,inv.findOne(...) 返回一个Querydata.findOne(...) 也返回一个QueryQueryif(itemfound) 中被转换为真值,在if(!data) 中被转换为假值。添加awaitexec()(可选)语句应该可以解决这个问题。还有data.find().exec()返回一个数组,即使是空的也是真的。

        const data = inv.findOne(User: message.author.id)
        if(!await data.exec()) 
            return message.reply("You own no items. Buy something to trade")
        
        if(item === 'hat') 
           const itemfound =  await data.find(User: message.author.id, Items: '?Hat').exec()
           if(!itemfound.length) 
               return message.reply("FOund!")
           
        

【讨论】:

以上是关于FindOne 没有正确找到数组中的项目 discordjs的主要内容,如果未能解决你的问题,请参考以下文章

如何正确使用 findOne mongoDB 查询?

猫鼬中的 findOne 返回空对象,然后返回正确的对象

如何使用 findOne 查询 mongodb 并排除数组中的一些嵌套字段

foobar2000无法打开cue文件无法打开用于播放的项目(对象未找到): .Disc.Sky].专辑.(FLAC).cue" / index: 1

使用 Mongoose FindOne 和 Bluebird Promises 在循环中构建数组

mongoose.findOne() 后数组被清除