我想以降序将数据保存在firebase数据库中,我发现解决方案是添加一个带有负值的timeStamp字段,但使用 ServerValue.TIMESTAMP 仅将值保存在一种积极的方式,那么如何在FireBase中保存否定的timeStamp:
型号代码:
public class Book{
Object createdTimestamp;
String nom_livre;
String desc_livre;
String prix_livre;
String id_book;
String id_user;
public Book() {
super();
}
public Book(String nom_livre, String desc_livre, String prix_livre, String id_book,String id_user, Object createdTimestamp) {
super();
this.nom_livre = nom_livre;
this.desc_livre = desc_livre;
this.prix_livre = prix_livre;
this.id_book = id_book;
this.id_user=id_user;
this.createdTimestamp= createdTimestamp;
}
@Exclude
public long getCreatedTimestampLong(){
return (long)createdTimestamp;
}
//other getters and setters
}
在fireBase中添加数据的代码,在我的情况下,我正在addBookActivity上创建一本书:
private void createBook(String nom_livre, String desc_livre,String prix_livre,Object createdTimestamp) {
bookInfos=new Book(nom_livre,desc_livre,prix_livre,idLivre,id, ServerValue.TIMESTAMP );
myRefBook.child(idBook).setValue(bookInfos);
}
答案 0 :(得分:0)
您有两个选择,在您最初将常规时间戳记号写为正数之后,它们都需要第二次写入数据库。
如果您只想在客户端应用程序上写数据,您可以做的就是像现在一样写createdTimestamp
,然后通过侦听您刚刚写的位置,将该值读回客户端。读回后,您将拥有实际的时间戳记值。然后,您可以轻松地计算出负数,然后将其写回所需的位置(如果您正在使用它按相反的时间顺序排序,则可能是revCreatedTimestamp
。
您的另一种选择是使用Cloud Functions for Firebase编写Realtime Database trigger来响应与位置/books/{book_id}
匹配的写入,其中book_id
是您为该字符串生成的字符串。书。然后,该触发器可以捕获时间戳并在同一位置写出否定版本。