Мне нужно обновить определенную запись массива моей карты в Firestore - PullRequest
0 голосов
/ 19 апреля 2020

Я хочу обновить продукт из моего массива продуктов.

У меня есть массив продуктов в коллекции

products[{
   - 0
   productPrice: 123
   - 1
   productPrice: 432
}]

В моем коде я прошел позицию элемента I хочу обновить в этом массиве продуктов

  suspend fun updateProductPrice(position:Int,shopId: String,price: Int): Resource<Unit> {
        FirebaseFirestore.getInstance().collection("shops").document(shopId).update("products"[position]) //here I need to get productPrice and update its value to the price parameter in my method
        return Resource.Success(Unit)
    }

Мне нужно обновить значение productPrice (в позиции 0) для этого массива, но я не могу найти, как

Спасибо!

Ответы [ 2 ]

1 голос
/ 19 апреля 2020

Невозможно обновить массивы по их индексу. Вам нужно будет прочитать документ, изменить массив в памяти так, как вы хотите, а затем обновить поле массива обратно в документ. Вы можете использовать транзакцию, если вам нужна операция для атома c.

0 голосов
/ 19 апреля 2020

Я решил свою проблему, как сказал Дуг, я отредактировал элемент в моем массиве, который нуждался в изменении цены, затем я просто обновил весь массив данных со всем массивом, но с одной записью в моей желаемой позиции, обновленной, вот как я это сделал

 suspend fun updateProductPrice(position:Int,shopId: String,price: Int,productList:MutableList<Product>): Resource<Unit> {
        productList[position].price = price
        FirebaseFirestore.getInstance().collection("shops").document(shopId).update("products",productList).await()
        return Resource.Success(Unit)
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...