为什么返回整个文档时出错

时间:2018-12-23 17:03:08

标签: javascript node.js mongodb mongoose

我正在尝试使用findOne获取文档,我有一个简单的错误处理程序(if (err) console.log(err);),但是正在返回整个文档。我无法超越这个if陈述。如果我删除了if (err),那么它将被另一个声明该文档不存在的语句捕获。

使用Mongoose 5.4.0,曾尝试删除if语句,但被其他人抓住,说它不存在。我也在使用discord.js,所以无论它说的是message.reply还是message.channel.send,它只表示它将向通道发送一条消息,这与错误无关。

guildModel.findOne({"GuildName": GuildSearch}).then((err, result) => {
    if (result) {
        let guildEmbed = new Discord.RichEmbed()
        .setTitle(GuildSearch)
        .setColor("00ff65")
        .setDescription(result.GuildDescription);
        return message.channel.send(guildEmbed);
     } else {
        let NoDoc = new Discord.RichEmbed()
        .setTitle("Oops!")
        .setDescription(`<@!${message.author.id}>, There is no Server with the name ${GuildSearch} recorded with me.`)
        .setColor("ff7f00")
        .setFooter("Developed By William#8495");
         return message.channel.send(NoDoc);
      };
}).catch(err => {
    return message.reply("Error: " + err);
});

它应该只发送一个名为GuildDescription的文档字段,但是它发送Error:和整个文档。

1 个答案:

答案 0 :(得分:0)

您正在使用“承诺样式”查询,因此第一个参数应为result,而不是err

guildModel.findOne({ "GuildName": GuildSearch }).then(result => {
}).catch(err => {
  console.log(err)
})

或者您可以使用其他语法:

guildModel.findOne({ "GuildName": GuildSearch }, (err, result) => {
  if (err) console.log(err)
});

Mongoose documentation