Firebase分别为每个产品设置新数据

问题描述

我有此Firebase数据库,我正尝试将我单击以获取当时最受欢迎的当前用户的最爱的每种产品保存在数据库中。问题是,我只能设置1个文档,但是我想在收藏的文档中分别设置每个新文档。

我想将我单击的“ uniqID”参数(即我单击到收藏夹的产品的ID)传递到数据库,并自动使用其ID创建新文档。我尝试使用es6结构,但没有用。 / p>

enter image description here

firebase.service.ts

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!");
    }
  }

解决方法

您需要按如下方式使用square brackets notation

  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);
    });