Java中的Firebase Query.startAt(ServerValue.TIMESTAMP)

时间:2015-10-27 06:15:14

标签: java firebase

我想模仿以下内容,从我的Firebase侦听器中排除初始数据,但是用Java进行。

var ref = new Firebase('https://<your instance>.firebaseio.com/messages');

var queryRef = ref.orderBy('created').startAt(Firebase.ServerValue.TIMESTAMP);

queryRef.on('child_added', function(snap) {
  console.log(snap.val());
});

似乎不是.startAt()的签名,它将ServerValue.TIMESTAMP(Java SDK中的Map)作为参数。这个查询(使用Firebase服务器时间戳)在Java中是不可能的吗?

1 个答案:

答案 0 :(得分:3)

API doc says startAt()可以StringString, Stringbooleanboolean, Stringdouble或{{1} }}。所以不行。您无法传递包含TIMESTAMP的double, String

使用.info/serverTimeOffset

可以获得类似的结果
Map

现在您可以在查询中使用它:

Firebase offsetRef = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/.info/serverTimeOffset");
offsetRef.addValueEventListener(new ValueEventListener() {
  @Override
  public void onDataChange(DataSnapshot snapshot) {
    double offset = snapshot.getValue(Double.class);
  }
  @Override
  public void onCancelled(FirebaseError error) {
    System.err.println("Listener was cancelled");
  }
});