mongodb 在mongoose中使用findOne时未定义

6l7fqoea  于 2022-11-22  发布在  Go
关注(0)|答案(1)|浏览(146)

这是mongoose的方案文件。
方案:

const mongoose = require("mongoose");
let holiday = new mongoose.Schema({
    staff: String,
    reason: String,
    expected: Number
})

module.exports = mongoose.model("holiday", holiday);

这是主文件,我试图在其中获取数据,但没有工作。
事件:

client.on('message', async message => {
    let p = config.bot.prefix;
    let client = message.client;
    if (message.author.bot) return;
    if (message.channel.type === 'dm') return;
    if (!message.content.startsWith(p)) {
        console.log(1)
        let guild = client.guilds.cache.get(config.server.id)
        if (!message.guild.id === "911962044985667584") return;
        let role = message.guild.roles.cache.find(role => role.name === "On holiday");
        if (!message.member.roles.cache.has("956942754502565908")) return;
        const embed = new MessageEmbed()
            .setTitle("Staff back from holiday")
            .addField("Staff: ", message.author.tag, true)
        const data = holidaydata.findOne({
            staff: message.author.id
        })
        console.log(data.expected, data.reason, Date.now())
        if (!data) return console.log("NO DATA")
        if (Date.now() > data.expected) {
            console.log(3)
            message.member.roles.remove("956942754502565908")
            message.member.roles.add("913070918404833300")
            message.member.roles.add("913071151427780698")
            client.channels.cache.get(channels.stafflogs).send({ embed: embed })
            message.channel.send("Welcome back from holiday!")
            return data.delete();
        }
    }

我从上面的代码中得到的控制台输出。

1
undefined undefined 1668502797493

我尝试检查保存在数据库中的时间戳是否等于或大于当前时间戳,以便删除数据。

l3zydbqr

l3zydbqr1#

您应该等待您的findOne呼叫。否则它只会传回一个promise,而不具有expectedreason属性。请以下列程式码交换您的呼叫:

const data = await holidaydata.findOne({
  staff: message.author.id
})

相关问题