我正在尝试使用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:
和整个文档。
答案 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)
});