Доступ к документу с полем карты в firestore

Я хотел бы спросить, как получить доступ к паре значений ключа в поле в firestore через nextjs isReferralAvailable. Ключ TESTER1 и логическое значение true Я хочу отобразить их в таблице или просто записать в консоль пару значений ключа внутри isReferralAvailable

Вот моя функция для получения коллекции ReferralCodes и ее значения.

const [checkReferralStatus, setReferralStatus] = useState([true, false]);
const [referralCodes, setReferralCodes] = useState([]);

const referralCodesDb = (
    collectionName,
    setterName,
    queryOperator,
    valueFieldPrameter
  ) => {
    const q = query(
      collection(db, collectionName),
      where("isReferralAvailable", queryOperator, valueFieldPrameter)
    );
    const unsubscribe = onSnapshot(q, (response) => {
      setterName(
        response.docs.map((data) => {
          return { ...data.data(), id: data.id };
        })
      );
    });
    return unsubscribe;
  };

и я вызываю свою функцию в useEffect

useEffect(() => {
    const unsubscribe = referralCodesDb(
      "ReferralCodes",
      setReferralCodes,
      "in",
      checkReferralStatus
    );
    return () => {
      unsubscribe();
    };
  }, [checkReferralStatus]);

Я также создал displayReferralCodes отдельно от html, чтобы я мог легко вызвать его в div.

const displayReferralCodes = referralCodes
    .slice(pagesVisited, pagesVisited + usersPerPage)
    .map((referralCodes) => {
      // TABLE
      return (
        <tr className = "bg-white border-b dark:bg-gray-800 dark:border-gray-700">
          <td className = "px-6 py-4 font-medium text-gray-900 whitespace-nowrap dark:text-white">
            {referralCodes.isReferralAvailable}{" "}
          </td>
        </tr>
      );
    });

Я пытаюсь консольно зарегистрировать referralCodes, но он не регистрирует никаких значений.

Вы можете получить доступ к полям карты напрямую с помощью оператора . следующим образом: console.info(data.data().isReferralAvailable.TESTER1); скажите мне, работает ли это для вас

Rohit Kharche 11.04.2023 12:15

Это звучит как ответ @RohitKharche! 👍

Frank van Puffelen 11.04.2023 15:26
Интеграция Angular - Firebase Analytics
Интеграция Angular - Firebase Analytics
Узнайте, как настроить Firebase Analytics и отслеживать поведение пользователей в вашем приложении Angular.
0
2
88
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

В вашем коде:

const referralCodesDb = (
    collectionName,
    setterName,
    queryOperator,
    valueFieldPrameter
  ) => {
    const q = query(
      collection(db, collectionName),
      where("isReferralAvailable", queryOperator, valueFieldPrameter)
    );
    const unsubscribe = onSnapshot(q, (response) => {
      setterName(
        response.docs.map((data) => {
          console.info(data.data().isReferralAvailable.TESTER1); // ⇐ Accessing Fields of Map
          return { ...data.data(), id: data.id };
        })
      );
    });
    return unsubscribe;
  };

Поскольку Карты — это просто объект, выглядящий как JSON, поэтому вы можете получить доступ к их полям так же, как мы получаем доступ к полям объекта.

Спасибо, я не знал, что . можно использовать для доступа к нему!

flutternewbiee 13.04.2023 06:21

Другие вопросы по теме