node.js - Firebase 函数不会读取 Firestore 上的文档
问题描述
您好我正在尝试使用 Firebase 函数读取存储在 Firestore 上的用户文档。每个用户都有一个独特的文档,其中包含无法存储在 Firebase Auth 上的额外数据。文档名称是用户 UID。但是当我试图在我的可调用函数上阅读它时,我无法访问它。
创建用户时创建文档的代码:
exports.createdacc = functions.auth.user().onCreate(user => {
console.log('User created', user.phoneNumber);
return admin.firestore().collection('users').doc(user.uid).set({
number: user.phoneNumber,
verified: false,
});
});
读取该文档的可调用函数,以便我做出一些决定
exports.checkVerification = functions.https.onCall((data, context) => {
if (!context.auth){
throw new functions.https.HttpsError('unauthenticated');
}
console.log('user is ', context.auth.uid);
const user = admin.firestore().collection('users').doc(context.auth.uid);
user.get().then(doc => {
//temp code -- Not working
console.log('data read');
if (doc.get().verified){
console.log('verified');
} else {
console.log('not verified');
}
return "success";
}).catch(error => {
throw new functions.https.HttpsError('internal');
});
});
为什么我不能阅读文档?里面什么都没有执行。
解决方案
尝试在 user.get() 的回调中使用 data()
user.get().then(doc => {
//you get user doc value by using data()
const userData = doc.data();
// then you can use all properties from userData
const verified = userData.verified;
});
推荐阅读
- node.js - 使用 mongoose 来自 NodeJS 后端的 MongoDB 连接错误
- web-services - 如何从android xamarin表单在后台运行方法webservice
- error-handling - 处理 ActiveX EXE 引发的错误
- c - memset movq 给出段错误
- javascript - 注册时的 ServiceWorker MIME 类型错误('text/html')(React)
- android - 带有 Gradle 插件版本 3.6.1 和 Gradle 版本 5.6.4 的 Android Studio 3.6.1 无法正常工作
- mysql - AWS RDS MySQL 意外重启
- python - (Python) 列表扩展效率
- c# - AWS Lambda C# 函数,总是返回成功的问题
- pthreads - 为什么 POSIX 将信号量标准化为系统调用,但将互斥锁和条件变量留给 Pthread(用户级别)