Ошибка FirebaseError: Запрос функции. где() вызывается с недопустимыми данными. Неподдерживаемое значение поля: не определено в next.js

# #javascript #firebase #google-cloud-firestore #next.js

Вопрос:

Я хочу создать клон WhatsApp с помощью next.js в котором я хочу добавить электронное письмо получателя с изображением его профиля в мой раздел чата, но в нем постоянно появляется ошибка, как я упоминал выше в chat.js папке

вот моя chat.js папка

 import styled from 'styled-components'; import {Avatar} from '@material-ui/core'; import getRecipientEmail from '../utils/getRecipientEmail'; import {auth,db} from '../firebase'; import{useAuthState} from 'react-firebase-hooks/auth'; import {useCollection} from "react-firebase-hooks/firestore";   function Chat({id, users}) {  const [user] = useAuthState(auth);    //here is my error occurs  const [recipientSnapshot] = useCollection(db.collection('users').where('email', '==', getRecipientEmail(users, user)));    const recipient = recipientSnapshot?.docs?.[0]?.data();  const recipientEmail = getRecipientEmail(users,user);  return (  lt;Containergt;  {recipient ? (  lt;UserAvtar src={recipient?.photoURL} /gt;  ) : (  lt;UserAvtargt;{recipientEmail[0]}lt;/UserAvtargt;  )}   lt;pgt;{recipientEmail}lt;/pgt;   lt;/Containergt;  )  }  

вот мой firebase.js

 import firebase from "firebase";  const firebaseConfig = {  apiKey: key,  authDomain: domain,  projectId: id,  storageBucket: bucket,  messagingSenderId: senderid,  appId: appid };  const app= !firebase.apps.length?firebase.initializeApp(firebaseConfig) : firebase.app();   const db = app.firestore(); const auth = app.auth(); const provider = new firebase.auth.GoogleAuthProvider();  export {db, auth, provider};  

вот мой компонент боковой панели

 import styled from 'styled-components'; import{ Avatar, Button } from '@material-ui/core'; import ChatIcon from '@mui/icons-material/Chat'; import MoreVertIcon from '@mui/icons-material/MoreVert'; import SearchIcon from '@mui/icons-material/Search'; import * as EmailValidator from 'email-validator'; import {auth,db} from '../firebase'; import { useAuthState } from 'react-firebase-hooks/auth'; import {useCollection } from 'react-firebase-hooks/firestore'; import Chat from './Chat'  function Sidebar() {  const[user] = useAuthState(auth);  const chatRef = db.collection('chats').where('users', 'array-contains', user.email);  const[userSnapshot] = useCollection(chatRef);  const createChat = () =gt; {  const input = prompt('enter the email address for the user you wish to chat with');  if(!input) return null;   if(EmailValidator.validate(input) amp;amp; !chatAlreadyExist(input) amp;amp; input !== user.email) {  db.collection('chats').add({  users: [user.email, input],  })  };  }   const chatAlreadyExist = (recipientEmail) =gt;  !!userSnapshot?.docs.find((chat) =gt;  chat.data().users.find((user) =gt; user === recipientEmail)?.length gt; 0  )  

Комментарии:

1. Что-то не так с вашей функцией getRecipientEmail(пользователи,пользователь). Пожалуйста, проверьте наличие скобок и синтаксических ошибок( я думаю, что вижу там разное количество открывающих и закрывающих скобок!). Также я не уверен, можем ли мы сравнить запрос where с вызовом функции (как где (электронная почта’,’==’, getRecipientEmail(пользователи, пользователь)))