Я хочу сделать этот сценарий.Java-объект (пусть называется Foo) имеет два поля.
- одна "длинная" для метки времени
- одна "int" для одинакового количества
Я хочу, чтобы метки времени были меньше сегодняшних, а затем закажите этистрок, как.
Вот мой код ...
CollectionReference collectionReference = FirebaseFirestore.getInstance().collection("object");
collectionReference.whereLessThan("weddingDateTimeMillis", System.currentTimeMillis())
.orderBy("weddingDateTimeMillis")
.orderBy("like", Query.Direction.DESCENDING).get().
addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@SuppressWarnings("ConstantConditions")
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
//...
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
//...
}
});
Но код не работает, я надеюсь.«like orderBy» игнорируется, а список приходит только по временным меткам.
Я создал индекс автоматически, щелкнув ссылку в logcat.
Что с ними не так?Я не понимаю логику.
РЕДАКТИРОВАТЬ
Класс Java, пример веб-интерфейса json и firebase можно найти выше.Нет входных данных, необходимых для запроса.А данные ответа только по заказу "weddingDateTimeMillis".Я не хочу записывать выходные данные, потому что они будут слишком длинными.
Object.Java
public class Wedding Serializable {
private String parseId;
private User bride;
private User groom;
private Long weddingDateTimeMillis;
private String weddingAddress;
private Double locationLatitude;
private Double locationLongitude;
private String mailAddress;
private int like;
//getters and setters
образец JSON для объекта
{
"bride":{
"name":"Many",
"userType":"BRIDE"
},
"groom":{
"name":"Long",
"userType":"GROOM"
},
"like":32,
"parseId":"04FFTYQwZbCAAXAn2W60",
"weddingDateTimeMillis":1500118792847
}
ЕслиВы хотите просмотреть все тестовые данные, вы можете посмотреть здесь: http://ardakaplan.com/test_json.txt
снимок экрана для веб-интерфейса в консоли Firebase