gpt4 book ai didi

android - 根据 ServerValue.TIMESTAMP 查询 Firebase

转载 作者:太空狗 更新时间:2023-10-29 13:10:43 26 4
gpt4 key购买 nike

我有一个 FireBase 后端,它有一个像这样的时间戳......这些节点中有许多是已推送的对象。

DB set up

每个节点都有一个使用 ServerValue.TIMESTAMP 设置的时间戳。

在数据模型类中设置服务器时间

private HashMap<String, Object> timestampCreated;

//set time stamp in constructor when new obj is created
public DataModel(...){
// TIME STAMP
HashMap<String, Object> timestampCreatedObj = new HashMap<String, Object>();
timestampCreatedObj.put("date", ServerValue.TIMESTAMP);
this.timestampCreated = timestampCreatedObj;
}

//getting timestamp

public HashMap<String, Object> getTimestampCreated(){
return timestampCreated;
}

@Exclude
public long getTimestampCreatedLong(){
return (long)timestampCreated.get("date");
}

以上都可以很好地插入数据库,我可以检索时间。

在另一个类中,我想在 FirebaseListAdapter 上设置查询设置查询可以说是显示最近 5 天内的项目。

  long daysInpast= new Date().getTime() - TimeUnit.MILLISECONDS.convert(5, TimeUnit.DAYS);

然后我设置查询

        Query queryDays= mDatabaseQuery.child("timestampCreated").orderByChild("date").endAt(daysInpast);

final FirebaseListAdapter<myData> adapterQuery = new FirebaseListAdapter<myData>
(getActivity(), myData.class, R.layout.list_item, queryDays) {//do stuff}

这是我不确定的查询,我的列表返回空,如果我只是使用我的 FirebaseListAdapter 而没有传递数据库引用的查询,我的列表会按预期填充。我怀疑它的数据是如何布局的?他事实上我的时间抽头在一个子节点中,这是一个问题吗?

我试过只用

Query queryDays= mDatabaseQuery.orderByChild("date").endAt(daysInpast);

也不过没用

感谢任何帮助

最佳答案

您需要在您想要返回的 child 上方的位置运行查询,这看起来是您数据库的根目录(请不要发布带有模糊文本的图片,下次将实际的 JSON 作为文本发布) .

如果您确实需要数据库根目录下的级别,您可以查询日期:

DatabaseReference root = FirebaseDatabase.getInstance().getReference();
Query query = root.orderByChild("timestampCreated/date").endAt(daysInPast);

关于android - 根据 ServerValue.TIMESTAMP 查询 Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41415652/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com