- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用时间戳将旧消息删除到 FriendlyChat 中。我正在使用这篇文章 How to delete firebase data after "n" days试图解决。我遇到的问题:我的 firebase 数据库的这段代码正在删除所有消息,而不仅仅是我需要的消息。
我的 firebase 数据库 JSON:
{
"messages" : {
"Bl0AiMMUXsV2H58lqoj0rO84" : {
"-KYo1YqO9vQ4Fcc07TcU" : {
"dateCreatedGu" : {
"date" : 1481563061846
},
"name" : "nameOfUser",
"photoUrl" : "https://lh6.g/photo.jpg",
"text" : "h"
},
"-KYo1atRyY3VYxuTZRPZ" : {
"dateCreatedGu" : {
"date" : 1481563074335
},
"name" : "\"nameOfUser\"\"",
"photoUrl" : "https://lh6.googleusercontent.com.../-photo.jpg",
"text" : "g"
},
"-KYo1bQXtJNB94et25m2" : {
"dateCreatedGu" : {
"date" : 1481563076516
},
"name" : "Gus",
"photoUrl" : "https://lh6.../photo.jpg",
"text" : "b"
},
"-KYo4GmLdM0TyT_Aym0u" : {
"dateCreatedGu" : {
"date" : 1481563774514
},
"name" : "gus",
"photoUrl" : "https://lh6.go.../photo.jpg",
"text" : "h"
}
}
}
}
我的安卓代码 fragment :
mFirebaseDatabaseReference = FirebaseDatabase.getInstance().getReference("messages");
//beginn n-days
long cutoff = new Date().getTime() - TimeUnit.MILLISECONDS.convert(30, TimeUnit.DAYS);
Query oldItems = mFirebaseDatabaseReference.orderByChild("timestamp").endAt(cutoff);
//
oldItems.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
for (DataSnapshot itemSnapshot: snapshot.getChildren()) {
itemSnapshot.getRef().removeValue();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
//end n-days
这里的区别是我在 date 中的时间戳是在“dateCreatedGu 而不是直接在消息上,因为我使用 Map 来存储时间戳.
怎么了?我怎样才能正确地只删除我需要的消息——例如超过 30 天的消息?我试图将周期形式从 30 天更改为 30 秒到 cutoff = new Date().getTime() - TimeUnit.MILLISECONDS.convert(30, TimeUnit.SECONDS);
以验证代码。
我尝试将 addValueEventListener
更改为添加 ChildEventListener...
我知道 orderByValue
在您不读取具有属性的对象而是直接读取属性时使用。我知道在这种情况下,最好使用 orderbyKey 优化代码,因为 key 在时间期间按字母顺序存储 - 跳跃值) - 对于优化时间戳的搜索也很有用。我了解到 addChildEventListener
尝试读取数据库中的每个值 f 存在多个消息(例如)。但我仍然没有找到如何只删除我需要的消息。我如何使用我的数据库来做到这一点?
最佳答案
由于您嵌套了时间戳,因此您需要在查询中按该嵌套属性进行排序:
Query oldItems = mFirebaseDatabaseReference.orderByChild("dateCreatedGu/date").endAt(cutoff);
关于android - 删除早于天数的消息 - 使用 MAP 的时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41106772/
给定一个带有多个 date_time 戳的字符串,我想 提取第一个戳及其前面的文本 候选字符串可以有一个或多个时间戳 后续的 date_time 戳记将被 sep="-" 隔开 后续date_time
是否可以合并从相机拍摄的文本和照片?我想在照片上标记日期和时间,但我在 Google 上找不到任何内容。 最佳答案 使用下面的代码来实现你所需要的。 Bitmap src = Bitm
有没有办法通过 Graph API 戳另一个用户?基于this post ,并使用 Graph Explorer ,我发布到“/USERID/pokes”,我已经授予它(Graph API 应用程序和
我有两个向左浮动的元素。一个是 body 的第一个 child ,另一个是容器的第一个 child ,容器是 body 的第二个 child 。 ...
我是一名优秀的程序员,十分优秀!