javascript - 如何从firebase中的函数检索数据
问题描述
我可以看到该功能现在在云功能日志中运行,它根据用户的电子邮件发回用户信息,但是,我似乎无法在应用程序客户端中检索该数据,它只是通过Optional(<FIRHTTPSCallableResult: 0x2825b0b70>)
这是我的功能代码:
import * as functions from 'firebase-functions'
import * as admin from 'firebase-admin'
admin.initializeApp()
exports.uniqueEmail = functions.https.onCall((data) => {
const email = data.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 "true"
})
.catch(function(error) {
console.log('Error fetching user data:', error);
return "false"
});
});
这是我的快速代码,试图将我应该检索的数据打印到控制台:
else if (email != "" && password == ""){
print("testing...")
let functions = Functions.functions()
functions.httpsCallable("uniqueEmail").call(["email": 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]
print("CODE:", code, " ","Message:", message, " ","DETAILS:", details)
}
// ...
}
print(result)
if let text = (result?.data as? [String: Any])?["email"] as? String {
let output = text
print(output)
}
}
}
解决方案
现在,您的 Cloud Functions 代码的顶层没有返回任何内容,因此您需要通过return
在顶层添加 a 来解决这个问题:
exports.uniqueEmail = functions.https.onCall((data) => {
const email = data.email;
if (!email) {
throw new functions.https.HttpsError('invalid-argument', 'Missing email parameter');
}
return admin.auth().getUserByEmail(email).then(function(userRecord) {
console.log('Successfully fetched user data:', userRecord.toJSON());
return {"taken" : "true"}
}).catch(function(error) {
console.log('Error fetching user data:', error);
return({"taken": "false", error});
});
});
使用上述代码,调用 Cloud Function 的代码会返回一个 JSON 对象,在 Swift 中它会转换为字典:[String, Any]
.
推荐阅读
- c++ - 将spmat犰狳稀疏矩阵转换为csr格式
- python - 使用 TensorFlow 在沙盒中运行 python 3
- python - Python Airflow bigquery 400 configuration.query.createDisposition 无法为脚本设置
- excel - 在 2 个范围内不相等的对数
- android - Android - 存储哈希数据的最佳方式(有根设备)
- javascript - 禁用“最近输入的值”下拉菜单字段
- c++ - OpenGL 2D 圆 - 旋转 AABB 碰撞
- javascript - 如何将相同的元素组合成一个新的数组
- python - 远程监控策略建议
- r - R - 将文件夹中的文件读入一个数据框