【发布时间】:2020-04-07 14:13:58
【问题描述】:
我有一个类似这样的云功能:
exports.verifyEmail = functions.https.onCall((data, context) => { // data contains session_id (doc id where otp is stored) and otp
return new Promise((resolve, reject) => {
admin.firestore().collection('verification').doc(data.session_id).get().then(doc => {
if(data.otp === doc.data().otp){
return resolve()
} else {
return reject({message: 'OTP did not match'})
}
}).catch(err => {
return reject({message: err.message})
})
})
})
我在某处的博客上读到了这种方法。现在的问题是,当我在客户端放置错误的 OTP 时,它显示错误为INTERNAL,而不是显示错误消息OTP did not match。发送错误消息的正确方法是什么?
【问题讨论】:
-
err.message 可能返回内部
-
是的,客户端的 err.message 给出了字符串 'INTERNAL'。
-
没有。避免使用
Promiseconstructor antipattern。 -
您是否尝试过使用真正的
Error而不是带有message的对象? -
@Bergi ,如何在拒绝时传递错误?请举个例子...
标签: javascript firebase google-cloud-functions es6-promise