Есть ли способ поместить список пользовательских объектов в пользовательский объект в cloud-firestore - PullRequest
0 голосов
/ 06 апреля 2019

Я занимаюсь разработкой приложения для Android для университетского проекта с использованием облачного пожарного хранилища, и мне интересно, возможно ли в документе иметь поле, представляющее собой массив пользовательских объектов (сам документ также является пользовательским объектом)это какое-то вложение.

Я уже могу использовать пользовательские объекты (Квитанция).У меня есть массив строк, представляющих 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/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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...