如何使用 FieldValue.serverTimestamp() 在 android 中自定义模型类
Posted
技术标签:
【中文标题】如何使用 FieldValue.serverTimestamp() 在 android 中自定义模型类【英文标题】:how to use FieldValue.serverTimestamp() to custom model class in android 【发布时间】:2018-04-12 14:42:37 【问题描述】:我使用 Firestore 作为数据库,现在我想在用户注册时存储服务器时间戳。
来自 Firestore 文档
Map<String,Object> updates = new HashMap<>();
updates.put("timestamp", FieldValue.serverTimestamp());
docRef.update(updates)
.addOnCompleteListener(new OnCompleteListener<Void>() //--
但现在我想在我的模型类中使用这个时间戳。
public class UserModel implements Serializable
private String name;
private String uid;
private String email;
private String password;
private long timestamp;
public long getTimestamp()
return timestamp;
public void setTimestamp(long timestamp)
this.timestamp = timestamp;
public String getName()
return name;
public void setName(String name)
this.name = name;
public String getUid()
return uid;
public void setUid(String uid)
this.uid = uid;
public String getEmail()
return email;
public void setEmail(String email)
this.email = email;
public String getPassword()
return password;
public void setPassword(String password)
this.password = password;
我怎样才能做到这一点。 请帮帮我。
【问题讨论】:
【参考方案1】:经过大量研究,我找到了解决方案。
@ServerTimestamp
private Date timestamp;
public Date getTimestamp()
return timestamp;
public void setTimestamp(Date timestamp)
this.timestamp = timestamp;
当调用这个类时
UserModel userModel = new UserModel();
userModel.setEmail(email);
userModel.setPassword(password);
userModel.setName(name);
userModel.setUid(uid);
insertUserDataToFireStore(userModel);
这是我找到解决方案的链接 Click here
【讨论】:
如何在 ios 中实现类似的功能?如何创建包含时间戳数据类型的模型类? 谢谢! @ServerTimestamp 注释不应该在公共 getter 上而不是私有成员上吗? 感谢经过 4 小时的奋斗,您拯救了我的一天。 +1【参考方案2】:你需要更改这行代码:
private long timestamp;
与
private Map<String, String> timestamp;
这里是对应的公众setters
和getters
:
public void setTimestamp(Map<String, String> timestamp)
this.timestamp = timestamp;
public Map<String, String> getTimestamp()
return timestamp;
请记住,您将时间戳设置为Map
,当您检索时,您将其检索为Long
。
【讨论】:
为什么这么复杂?我试图在我的自定义类中有一个简单的吸气剂,网上没有任何内容,当我寻求帮助时,我在这里被关闭:***.com/questions/60480508/… 不,这里的例子都不适合我 - 也Map<String, String>
也不是 @ServerTimestamp
注释。非常感谢您的帮助!
@jeand'arme 我建议你花点时间阅读一下how to ask a question。因此,请使用自己的 MCVE 发布另一个新问题,以便我和其他 Firebase 开发人员可以帮助您。【参考方案3】:
private com.google.firebase.Timestamp date;
public yourModel(com.google.firebase.Timestamp date)
this.date= date;
public com.google.firebase.Timestamp getDate()
return date;
public void setDate(com.google.firebase.Timestamp date)
this.date = date;
【讨论】:
感谢您抽出宝贵时间提供答案。!你能:- 1)编辑你的答案,以便详细回答 2)解释你想用这个答案实现什么以及你想说什么。?有关更多信息,请参阅如何在帮助中心写出好的答案(如何提问:***.com/help/how-to-answer)【参考方案4】:如果您只想要 时间戳 而不是准确的时间事件,那么您可以使用
System.currentTimeMillis();
【讨论】:
以上是关于如何使用 FieldValue.serverTimestamp() 在 android 中自定义模型类的主要内容,如果未能解决你的问题,请参考以下文章
如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]
如何使用 AngularJS 的 ng-model 创建一个数组以及如何使用 jquery 提交?