Firebase устанавливает новые данные для каждого продукта отдельно

#angular #typescript #firebase #google-cloud-firestore #favorites

#angular #typescript #firebase #google-облако-firestore #Избранное

Вопрос:

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

Я хочу передать свой параметр ‘uniqID’, который является идентификатором продукта, который я выбираю в избранное, в базу данных и автоматически создать новый документ с его идентификатором .. я пробовал со структурой es6, но не сработало.

введите описание изображения здесь

опорному пункту.услуги.ц

 async addFavorites(
    uniqID: string,
    favorite_title: string,
    favorite_description: string,
    favorite_image: string,
    favorite_tag: string,
    favorite_stoc: boolean,
    favorite_reducere: number,
    favorite_price: number,
    favorite_userId: string
  ): Promise<void> {
    var user = firebase.auth().currentUser;

    if (user != null) {
      return await this.firestore
        .collection("users")
        .doc(user.uid)
        .set(
          {
            favoriteID: {
              // here i need to multiply this array by each product i click using parameter "uniqID"
              uniqueID: {
                favorite_title: favorite_title,
                favorite_description: favorite_description,
                favorite_image: favorite_image,
                favorite_tag: favorite_tag,
                favorite_stoc: favorite_stoc,
                favorite_reducere: favorite_reducere,
                favorite_price: favorite_price,
                favorite_userId: favorite_userId,
                isFavorite: true,
              },
            },
          },
          { merge: true }
        )
        .catch((err) => {
          console.log(err);
        });
    } else {
      console.log("Please Log In to add favorite!");
    }
  }
  

Ответ №1:

Вам нужно использовать обозначение в квадратных скобках следующим образом:

   const favoriteObj = {};
  favoriteObj[uniqId] = {
    favorite_title: favorite_title,
    favorite_description: favorite_description,
    favorite_image: favorite_image,
    favorite_tag: favorite_tag,
    favorite_stoc: favorite_stoc,
    favorite_reducere: favorite_reducere,
    favorite_price: favorite_price,
    favorite_userId: favorite_userId,
    isFavorite: true,
  };

  return await this.firestore
    .collection('users')
    .doc(user.uid)
    .set({ favoriteID: favoriteObj }, { merge: true })
    .catch((err) => {
      console.log(err);
    });