簡體   English   中英

反應 JS 上的 Firebase v9

[英]Firebase v9 on react JS

我只是想檢查我是否沒有在我的 firebase 上創建其他聊天。我查詢我與這個 email 的所有聊天,然后我檢查數組是否包含我想與之聊天的 email,但它不起作用。 我正在使用 Firebase V9。 有人有想法嗎?

function Sidebar() { const [user] = useAuthState(auth);

const chatRef = collection(db, 'chats');
const qchatExist = query(chatRef, where('users', 'array-contains', user.email) );
const chatsSnapshot = getDocs(qchatExist);

const createChat = () => {

    const input = prompt('Please enter a email adresse');
    if(!input) return;
    if (EmailValidator.validate(input) && !chatAlreadyExists(input) && input !== user.email ) {
        console.log("valide");
        addDoc(collection(db, 'chats'),
        {
            users: [user.email, input],
        });
    }
    else {
        console.log('invalide');
    }
}

const chatAlreadyExists = (data) =>
    !!chatsSnapshot?.docs.find( 
        chat => 
            chat.data().users.find( (user) => user === data)?.length > 0
    );

代碼

您可能想使用Collection Group Queries

因此您可以一次查詢所有聊天集合。

https://firebase.google.com/docs/firestore/query-data/queries#:~:text=We%20can%20use,across%20all%20cities%3A

const users = query(collectionGroup(db, 'users'), where('email', '==', 'example@hoge.com'));

並確保為查詢創建索引。

在使用集合組查詢之前,您必須創建一個支持您的集合組查詢的索引。 您可以通過錯誤消息、控制台或 Firebase CLI 創建索引。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM