此云功能错误是什么意思?

时间:2019-04-28 12:36:52

标签: javascript swift firebase firebase-authentication google-cloud-functions

我有这段代码可以检查是否接收了电子邮件,它的工作原理只是在云功能日志中抛出了错误,这是快速代码:


 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)

1 个答案:

答案 0 :(得分:1)

第一则消息仅是警告,除非您尝试建立出站连接,否则可以忽略它。

第二条消息是说您的功能代码希望接收一个输入对象,该输入对象的属性为“查询”,该对象的属性为“电子邮件”。但这不是您从客户那里得到的。在客户端,您传递了一个字符串(我想,因为您没有确切说明快速代码中的email是什么。)

还有,我怀疑您可能对可调用函数用作参数感到困惑。您正在将(req, res)作为参数,请求和响应显示出来,这通常是HTTP类型函数所期望的。但这不是可调用对象的工作方式。现在可能是审查documentation for callable functions的好时机。可调用函数的第一个参数是从客户端传递的数据对象本身。改用它,不要假设数据是通过查询字符串输入的。