我个人不能对当地的消防队做出React

ve7v8dk2  于 2022-12-14  发布在  React
关注(0)|答案(2)|浏览(130)

我用firebase做了一个todo应用程序。我把todos存储在firestore里,并把添加todo的用户的电子邮件地址保存到文档里。但是当一个用户保存todo时,所有的用户都能看到那个todo。我的代码:

const [dailys, setDailys] = useState([]);
const dailyRef = firebase.firestore().collection('daily');
const [addDaily, setAddDaily] = useState('');
const email = firebase.auth().currentUser.email;

useEffect(() => {
    async function check() {
        dailyRef.orderBy('createdAt', 'desc')
            .onSnapshot(
                querySnapShot => {
                    const dailys = []
                    querySnapShot.forEach((doc) => {
                        const { heading } = doc.data()
                        dailys.push({
                            id: doc.id,
                            heading,
                            email: email,
                        })
                    })
                    setDailys(dailys)
                }
            )
    }
    check()
}, [])
const addDailyPlan = () => {
    if (addDaily && addDaily.length > 0) {
        const timeStamp = firebase.firestore.FieldValue.serverTimestamp();
        const daily = {
            email:email,
            heading: addDaily,
            createdAt: timeStamp
        };
        dailyRef
            .add(daily)
            .then(() => {
                setAddDaily('');
                Keyboard.dismiss();
            })
            .catch((error) => {
                alert(error);
            })
    }
}
render(
 <FlatList data={dailys}/>

s5a0g9ez

s5a0g9ez1#

如果每个人都在同一个集合中进行推送,那么每个人都将得到相同的结果...
为每个用户创建一个特定的集合(推荐),或者将其添加到您的查询中=〉where(“email”,“==",email)
阅读文档以供参考

au9on6nz

au9on6nz2#

const email = firebase.auth().currentUser.email;
const dailyRef = firebase.firestore().collection('daily');

 setDoc(doc(dailyRef,email ), {
    name:"name",
    email:email });

const q = query(dailyRef, where("email", "==", email));

我按照你的建议,并使用了上述结构中的代码。但我得到了这样的错误:[未处理的承诺拒绝:类型错误:t._freezeSettings不是函数。(在“t._freezeSettings()”中,“t._freezeSettings "未定义)]

相关问题