#java #android #firebase #nested #google-cloud-firestore
#java #Android #firebase #вложенный #google-cloud-firestore
Вопрос:
Я разрабатываю приложение для Android для университетского проекта с использованием cloud firestore, и мне интересно, возможно ли иметь внутри документа поле, являющееся массивом пользовательского объекта (документ также сам является пользовательским объектом) Я думаю, что это какая-то вложенность.
Я уже могу использовать пользовательские объекты (получение). У меня есть arraylist строки, представляющей Artciles. В настоящее время те строки, которые отформатированы так, что я могу проанализировать их и прочитать цену, количество и название статьи, но в будущем мне может понадобиться добавить больше данных. Я думал об использовании вложенной коллекции, но мне нужно иметь возможность загружать весь документ напрямую.
public class Ticket{
// TICKET DATA
private Date date;
private double cashIn;
...
// ARTICLES LIST DATA
private ArrayList<String> basket;//What I want to change
public Ticket(){
// EMPTY CONSTRUCTOR NEEDED
}
//With other constructors, setters and getters and parsing code
Если я заменяю тип внутри моего ArrayList на тип пользовательского объекта, я получаю эту ошибку:
Could not deserialize object. Can't convert object of type java.lang.String to type com.ereceipt.e_receipt.Objects.Article (found in field 'basket.[0]')
Я выполняю «преобразование» из firebase в объект Java внутри обратного вызова по щелчку мыши, используя это:
DocumentSnapshot documentSnapshot = // Some query (kind of big, you might not need it)
Ticket ticket = documentSnapshot.toObject(Ticket.class);
И вот текущий класс Article, который будет обновлен позже для будущих функций:
public class Article{
private String name;
private int amount;
private double unitprice;
public Article(){
}
...
}
Моя база данных состоит только из одной коллекции под названием receipt, а документ выглядит следующим образом:
receipt/basket (an array)
receipt/basket[0]/name (String)
receipt/basket[0]/amount (number)
receipt/basket[0]/unitprice (number)
receipt/cashIn (number)
receipt/store/name (String)
receipt/store/address (String)
receipt/store/message (String)
receipt/timestamp
Комментарии:
1. Пожалуйста, добавьте свою структуру базы данных.