【发布时间】:2021-10-27 14:48:54
【问题描述】:
您好,如果用户想要接收电子邮件,我正在编写一个 firebase 云函数来发送电子邮件。问题是,如果 userData.notifications.emails 为真或假,它总是会发送电子邮件。日志显示为 false:
Send Emails YES: false
if (userData?.notifications?.emails) {
functions.logger.log('Send Emails YES: ' + userData.notifications.emails);
admin.firestore().collection(`emails`).add({
to: email,
message: {
subject: subject,
html: text,
}
})
}
else {
functions.logger.log('Don't send Email')
}
【问题讨论】:
-
你试过
userData?.notifications?.emails === true吗? -
如果
userData.notifications.emails是字符串“false”而不是布尔值false,它将评估为true -
字符串“false”仍为真,仍将被评估为真
-
您有一个
if及其条件。你看到正在执行的身体,所以你知道条件是真实的。您会看到将它连接到一个字符串会得到"false"。为什么停在那里?显然它不是布尔值false,因为之前的观察 - 所以它必须是"false"、{ toString: () => false }之类的东西(大多数没有意义,因为它是 firebase,而且已经很明显它是什么了,但这不是重点),为什么不添加检查或调试,看看它实际上是什么?
标签: javascript node.js firebase