如何在 discord.js 上过滤数据库后得到结果?

问题描述 投票:0回答:2

我想从 db 的过滤器中获取结果,但我得到了未定义的结果,我不知道为什么。

const IDD = discordsearchf
const all = (await client.db.all()).filter(data => data.id.startsWith("tickets_"));
const mfilter = all.filter(data => data.value.creator === IDD && data.value.createdAt == '1678356812821');

const efilter = mfilter.filter(data => data.value.closedBy)   

console.log(efilter)

这里我没有定义:

const efilter = mfilter.filter(data => data.value.closedBy)   
console.log(efilter)

这里是控制台日志 mfilter 的 cmd:

[
  {
    id: 'tickets_1083331733912559716',
    value: {
      id: 136,
      category: [Object],
      reason: 'No reason provided',
      creator: '909068597089959976',
      invited: [],
      createdAt: 1678356812821,
      claimed: false,
      claimedBy: null,
      claimedAt: null,
      closed: true,
      closedBy: '715637000669102171',
      closedAt: 1678562559496,
      acceptedby: '846304823595106304',
      messageId: '1083331735191814184',
      closeReason: 'No REASON'
    }
  }
]

我尝试了

value.closedBy
data.value.closedBy
mfilter.closedBy

discord discord.js quick.db
2个回答
0
投票
[
  {
    id: 'tickets_1083331733912559716',
    value: {
      id: 136,
      category: [Object],
      reason: 'No reason provided',
      creator: '909068597089959976',
      invited: [],
      createdAt: 1678356812821,
      claimed: false,
      claimedBy: null,
      claimedAt: null,
      closed: true,
      closedBy: '715637000669102171',
      closedAt: 1678562559496,
      acceptedby: '846304823595106304',
      messageId: '1083331735191814184',
      closeReason: 'No REASON'
    }
  }
]

我又得到了这个我想像

closedBy
一样单独拿走它 -
messageId
.

我认为它需要解析JSON。


0
投票

尝试用这一行替换

mfilter

const mfilter = all.filter(data => data.value.creator === IDD && data.value.createdAt == 1678356812821);

data.value.createdAt
这是一个Number,正如我在您的代码中看到的那样,您在检查过滤条件
' '
时使用了字符串引号
data.value.createdAt == '1678356812821'

所以删除字符串引号可能会解决问题。 您的代码现在应该如下所示:

const IDD = discordsearchf
const all = (await client.db.all()).filter(data => data.id.startsWith("tickets_"));
const mfilter = all.filter(data => data.value.creator === IDD && data.value.createdAt == 1678356812821);

const efilter = mfilter.filter(data => data.value.closedBy)   
        
console.log(efilter)
© www.soinside.com 2019 - 2024. All rights reserved.