我有这段代码可以检查是否接收了电子邮件,它的工作原理只是在云功能日志中抛出了错误,这是快速代码:
let functions = Functions.functions()
functions.httpsCallable("uniqueEmail").call(email) { (result, error) in
if let error = error as NSError? {
if error.domain == FunctionsErrorDomain {
let code = FunctionsErrorCode(rawValue: error.code)
let message = error.localizedDescription
let details = error.userInfo[FunctionsErrorDetailsKey]
}
// ...
}
if let text = (result?.data as? [String: Any])?["text"] as? String {
//self.resultField.text = text
}
}
这是云功能代码:
import * as functions from 'firebase-functions'
import * as admin from 'firebase-admin'
admin.initializeApp()
exports.uniqueEmail = functions.https.onCall((req, res) => {
const email = req.query.email;
if (!email) {
throw new functions.https.HttpsError('invalid-argument', 'Missing email parameter');
}
admin.auth().getUserByEmail(email)
.then(function(userRecord) {
// See the UserRecord reference doc for the contents of userRecord.
console.log('Successfully fetched user data:', userRecord.toJSON());
return({taken: true}); // Returns {"taken": "true"} or {"taken": "false"}
})
.catch(function(error) {
console.log('Error fetching user data:', error);
return({taken: false}); // Returns {"taken": "true"} or {"taken": "false"}
});
});
这是错误,因为我正在使用云函数,我不确定两者都意味着什么,所以有人可以向我解释它们吗?
1。
未配置结算帐户。无法访问外部网络,并且配额受到严格限制。配置结算帐户以消除这些限制
2。
Unhandled error TypeError: Cannot read property 'email' of undefined
at exports.uniqueEmail.functions.https.onCall (/user_code/lib/index.js:7:28)
at /user_code/node_modules/firebase-functions/lib/providers/https.js:330:32
at next (native)
at /user_code/node_modules/firebase-functions/lib/providers/https.js:28:71
at __awaiter (/user_code/node_modules/firebase-functions/lib/providers/https.js:24:12)
at func (/user_code/node_modules/firebase-functions/lib/providers/https.js:294:32)
at corsHandler (/user_code/node_modules/firebase-functions/lib/providers/https.js:350:44)
at cors (/user_code/node_modules/firebase-functions/node_modules/cors/lib/index.js:188:7)
at /user_code/node_modules/firebase-functions/node_modules/cors/lib/index.js:224:17
at originCallback (/user_code/node_modules/firebase-functions/node_modules/cors/lib/index.js:214:15)
答案 0 :(得分:1)
第一则消息仅是警告,除非您尝试建立出站连接,否则可以忽略它。
第二条消息是说您的功能代码希望接收一个输入对象,该输入对象的属性为“查询”,该对象的属性为“电子邮件”。但这不是您从客户那里得到的。在客户端,您传递了一个字符串(我想,因为您没有确切说明快速代码中的email
是什么。)
还有,我怀疑您可能对可调用函数用作参数感到困惑。您正在将(req, res)
作为参数,请求和响应显示出来,这通常是HTTP类型函数所期望的。但这不是可调用对象的工作方式。现在可能是审查documentation for callable functions的好时机。可调用函数的第一个参数是从客户端传递的数据对象本身。改用它,不要假设数据是通过查询字符串输入的。