Tal*_*rda 12 java android firebase google-cloud-firestore
我有一个Challenge对象,它有自己的属性,我可以像这样成功地将它添加到数据库:
DocumentReference challengeRef=usersRef.document(loggedUserEmail).collection("challenges_feed").
document(callengeID);
challengeRef.set(currentChallenge);
Run Code Online (Sandbox Code Playgroud)
这就是它在数据库中的样子:
我想在数据库中创建一个新领域(在这个挑战下)latestUpdateTimetamp.它应该是这样的(我手动添加):
我试图将它设置constructor为object这样:
private Map<String,String> latestUpdateTimestamp;
public Challenge(String id, String senderName, String senderEmail) {
this.senderName=senderName;
this.senderEmail = senderEmail;
this.latestUpdateTimestamp= ServerValue.TIMESTAMP;
}
Run Code Online (Sandbox Code Playgroud)
但这就是我得到的database:
我想加入latestUpdateTimestamp到Challenge与Challenge在同一通话对象本身的数据库.可能吗?
在添加之前,我可以以某种方式将此timestamp作为属性添加到此object吗?
我知道我可以拨打新电话并添加此字段,但我想知道是否可以立即进行.
Ale*_*amo 36
是的,你可以,使用Map.首先,根据官方文档,有必要使用如下所示的注释:
@ServerTimestamp Date time;
Run Code Online (Sandbox Code Playgroud)
用于标记要使用服务器时间戳填充的日期字段的注释.如果正在编写的POJO对于@ ServerTimestamp-annotated字段包含null,则它将替换为服务器生成的时间戳.
这是您可以latestUpdateTimestamp使用服务器时间戳和同时challangeId使用所需值更新字段的方法.
DocumentReference senderRef = challengeRef
.document(loggedUserEmail)
.collection("challenges_feed")
.document(callengeID);
Map<String, Object> updates = new HashMap<>();
updates.put("latestUpdateTimestamp", FieldValue.serverTimestamp());
updates.put("challangeId", "newChallangeId");
senderRef.update(updates).addOnCompleteListener(new OnCompleteListener<Void>() {/* ... */}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13677 次 |
| 最近记录: |