flutter - Firestore如何将数据保存在子集合中
问题描述
我有一个集合users
,每个用户都有自己的文档。现在我想创建一个子集合来存储与特定用户相关的更多数据。
到目前为止,我的代码如下所示:
class DatabaseService {
Future isUserRegistered(String uid) async{
return await FirebaseFirestore.instance.collection('users')
.where('uid', isEqualTo: uid)
.get();
}
Future registerNewUser(email, password, uid) async{
return await FirebaseFirestore.instance.collection('users')
.doc(uid).set(
{
"email": email,
"password": password,
"uid": uid,
"token": -1,
"userGoal": false,
"userGender": false,
},
);
}
Future saveToRemote() async{
Map<String, dynamic> data = UserManager.userdata;
return await FirebaseFirestore.instance.collection('users')
.doc(data['uid'])
.set(data);
}
class UserManager {
static Map<String, dynamic> userdata = null;
}
如何将数据存储在子集合中?
编辑我创建了一个新的保存功能,但不是将数据存储在具有当前 uid 的文档的子集合中,而是创建了一个名为“uid”的新文档。如何解决?
Future saveInSubcollectionToRemote() async{
Map<String, dynamic> data = UserManager.userWeights;
return await FirebaseFirestore.instance.collection('users')
.doc('uid')
.collection('weights')
.doc(data['userWeight'])
.set(data);
}
解决方案
保存到子集合与保存到顶级集合没有什么不同。您构建CollectionReference
用户文档下的路径并add
像这样调用:
FirebaseFirestore.instance
.collection('users').doc(uid)
.collection('subcollection').add(
{
"field": value,
},
);
推荐阅读
- r - 如何在 Shiny 应用程序的输出中显示“请稍候”
- python - 如何修复错误 Guild Object has no attribute 'guild_permissions'
- php - romove obj 从查询 laravel obj['pivot']
- variables - Watson Assistant 上下文变量计数器 2021
- exe - 如何使可执行文件仅以管理员身份运行(exe 上的 UAC 图标)
- ios - 如何在表格视图中更新集合视图中的数据?
- javascript - 如何获取实际的客户端 URL?
- node.js - 导出 firebaseui 的导入节点模块导致玩笑测试失败,并显示“ReferenceError:未定义窗口”
- android - Android内容Uri不能被其他应用播放
- javascript - 我使用 insertBefore dom 方法在另一个元素之前插入一个元素。但它根本不起作用