我正在使用 Firebase 学习 Flutter。我在 Firebase 实时数据库中有一些虚拟数据:
{
"postsnode": {
"posts": [
{
"postId": "u1",
"postName": "p1"
}
]
},
"usersnode": {
"users": [
{
"userId": "u1",
"userName": "bla bla 1"
},
{
"userId": "u2",
"userName": "bla bla 2"
}
]
}
}
控制台数据库结构截图为:
我已成功对我的 usersnode 对象执行查询以获取特定用户:
void queryDB(BuildContext context) async {
AppUtil.showLoader(context: context);
FirebaseDatabase.instance.ref().child('usersnode/users').orderByChild('userId').equalTo("u1").get().then((snapshot) {
if (snapshot.exists) {
print("user:::" + snapshot.value.toString());
final jsonResponse = json.encode(snapshot.value);
List<dynamic> list = json.decode(jsonResponse);
List<Users> users = [];
list.forEach((element) {
Users usersModel = Users.fromJson(element);
users.add(usersModel);
});
users.forEach((element) {
debugPrint("UseX:::" + element.userName);
});
} else {
print('No data available.1');
}
AppUtil.dismissLoader(context: context);
// }).onError((error, stackTrace) {
// print('No data available.2');
// AppUtil.dismissLoader(context: context);
});
}
我只想更新我的特定对象,假设用户对象仅具有userId=u1! 有人可以帮我得到这个,使用查询更新!或者我做错了!
实际上我只是想根据某些条件更新对象:
更新用户 -> 其中 userId=u1
提前致谢!
最佳答案
欢迎使用 Flutter Firebase!
首先,您可能应该更改数据结构。无需为用户提供随机增量 ID。您可以使用它们的唯一 ID 作为对象的键:
{
"posts": {}
...
"users": {
"u1": {
"userName": "bla bla 1"
},
"u2": {
"userName": "bla bla 2"
}
}
}
然后,你可以这样做:
final String userId = 'u1';
final userDoc = FirebaseDatabase.instance.reference().child('users/$userId');
如果您计划在 posts
或 users
中存储大量数据,我强烈建议您检查 Cloud Firestore 。它提供了更好的结构和更高级的数据类型。
关于firebase - 更新 Firebase 实时数据库对象中的特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72262624/