java - Android Firebase Realtime:将具有嵌套对象的对象写入数据库
问题描述
是否可以将嵌套结构写入 firebase 实时数据库?
在我的情况下,我想将一个用户写入 DB,该用户引用了具有 String 属性的 Socks 对象。在数据库中,我需要一个名为“SocksCards”的孩子及其属性。使用此示例代码,socksCard 对象被忽略,用户数据被更新。
public void onDataChange(@NonNull DataSnapshot snapshot) {
User user = snapshot.getValue(User.class);
user.addSocksCards(socks);
userDb.setValue(user);
}
public class User {
public String username, surname, firstName, email, id, gender;
private SocksCard socksCards;
public User(){
}
public User(String username, String surname, String firstName, String email, String id, String gender){
this.username = username;
this.surname = surname;
this.firstName = firstName;
this.email = email;
this.id = id;
this.gender = gender;
}
public void addSocksCards(SocksCard sc){
this.socksCards = sc;
}
}
public class SocksCard {
private String socksID;
public SocksCard(String socksID){
this.socksID = socksID;
}
public String getSocksID() {
return socksID;
}
}
解决方案
Firebase在从/向数据库读取/写入 Java 对象时仅考虑公共字段、getter 和 setter。由于SocksCard socksCards
是私有的,并且没有 getter 和/或 setter,因此该字段确实被忽略了。
两种最简单的方法是将字段标记为公共:
public SocksCard socksCards
,或为其添加公共吸气剂:
public SocksCard getSocksCards(){
return this.socksCards;
}
推荐阅读
- python - 制作一个继承 TextIOWrapper 的自定义类
- android - 导入flutter firebase用户仪表板飞镖
- javascript - 在 JS 中加载网页后如何运行代码(window.onload 失败了)?
- python - Jupyter Notebook - 系统找不到指定的路径
- react-native - 组件异常 - 找不到变量:方向
- heroku - 使用heroku部署的nextjs中的环境变量
- apache - Apache递归重写规则
- node.js - 在 mongo 上运行大量数据并处理 node.js 中的文件,如何以异步方式执行此操作
- matrix - fsharp中的矩阵和向量乘法
- python - 在 Python 中,如何将单个值输入更改为完整的数据集?