Firebase Объединить в единый объект, если имя совпадает в Firebase - PullRequest
0 голосов
/ 25 мая 2020

В настоящее время я работаю над простым приложением корзины покупок.

Когда пользователь нажимает кнопку Add To Cart, я сохраняю продукт в БД как элемент массива.

Когда Пользователь пытается добавить несколько элементов одного и того же продукта, я хотел сгруппировать все продукты, увеличить количество и добавить их в БД.

В настоящее время добавляются дубликаты продуктов с тем же именем.

Ниже мой код

  this.auth.uid.subscribe(uid => {
      if (uid) {
        const userCart = this.firestore.collection('users').doc(uid);

        userCart.update({
          cart: firebase.firestore.FieldValue.arrayUnion(product)
        });
      }
    })

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

Как мне добиться этого с помощью Firebase, пожалуйста помощь

1 Ответ

0 голосов
/ 25 мая 2020

Вы не можете использовать оператор arrayUnion для увеличения значения, так как этот оператор проверяет уникальные полные значения.

То, что вы можете , - это использовать оператор increment для увеличения поля количества для каждого продукта:

const userCart = this.firestore.collection('users').doc(uid);

userCart.update({
  [product]: firebase.firestore.FieldValue.increment(1)
});

Таким образом, вы сохраняете каждый продукт как отдельное поле и увеличиваете его. Если поле для продукта еще не существует, устанавливается значение 1.

...