检查firebase数据库中是不是定义了一个值 - Discord.js
Posted
技术标签:
【中文标题】检查firebase数据库中是不是定义了一个值 - Discord.js【英文标题】:Check if there is a value defined in the firebase database - Discord.js检查firebase数据库中是否定义了一个值 - Discord.js 【发布时间】:2021-08-19 01:43:40 【问题描述】:我正在开发一个不和谐的机器人,并且我正在使用 firebase 数据库。在下面的代码中,我想检查mstatus
的值是否设置为"CASADO"
,但是如果这个值还不存在,则执行另一个命令。
database.ref(`Servidores/$message.guild.id/Users/$message.author.id/Casamento`).once('value').then(async function(db)
if (db.val().mstatus === 'CASADO')
const embederro = new Discord.MessageEmbed()
.setColor(process.env.COLOR)
.setDescription(`**<a:9999:847961716527595520> **Você já está casado. Use \`$process.env.PREFIXdivorciar\` para poder divorciar.`)
.setTimestamp()
.setFooter(moment(message.createdAt).format('D/MM/YYYY'))
.setAuthor(`Awake Bot`,bot.user.displayAvatarURL())
message.channel.send(embederro)
return;
else
console.log('OK');
)
上面的代码返回这个错误:
TypeError: Cannot read property 'mstatus' of null
【问题讨论】:
【参考方案1】:你可以检查这个DataSnapshot
所在位置的key
是不是null
:
database
.ref(`Servidores/$message.guild.id/Users/$message.author.id/Casamento`)
.once('value')
.then(async function (snapshot)
const key = snapshot.key;
if (key === null)
return console.log(`The value doesn't exist yet`);
const val = snapshot.val();
if (val === null)
return console.log(`The value is null`);
if (val.mstatus === 'CASADO')
const embederro = new Discord.MessageEmbed()
.setColor(process.env.COLOR)
.setDescription(
`**<a:9999:847961716527595520> **Você já está casado. Use \`$process.env.PREFIXdivorciar\` para poder divorciar.`,
)
.setTimestamp()
.setFooter(moment(message.createdAt).format('D/MM/YYYY'))
.setAuthor(`Awake Bot`, bot.user.displayAvatarURL());
return message.channel.send(embederro);
console.log(`The value exists but the mstatus is $val.mstatus`);
);
【讨论】:
我的继续给出错误“无法读取 null 的属性 'mstatus'”。因为当用户刚刚进入服务器时,数据库中没有定义“mstatus”值。你能帮我解决这个问题吗? 您还可以检查val
是否为空。我刚刚更新了我的答案。它是否按预期工作?
很高兴听到这个消息。不客气:)
Key 是一个非空值,对于上面的代码,将始终等于"Casamento"
,因此无需对其进行空测试(即使数据不存在)。虽然您可以测试snapshot.val() == null
,但测试snapshot.exists()
更正确。以上是关于检查firebase数据库中是不是定义了一个值 - Discord.js的主要内容,如果未能解决你的问题,请参考以下文章
如何检查 Unity 的 Firebase 数据库中是不是已存在键/值
Swift 3 + Firebase:检查数组内的值是不是存在?