首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有添加文档的Firebase v9

没有添加文档的Firebase v9
EN

Stack Overflow用户
提问于 2022-03-15 15:15:04
回答 1查看 183关注 0票数 0

我正在使用Firebase v9。身份验证可以正常工作,但由于某些原因,Firestore无法工作。我连一个错误都没有--它什么也做不了。

我试过addDocs(),但还是没有用。

编辑:实际上,我使用的是firebase @9.1.0,我将它升级到@9.6.7,它运行得非常好!由于错误(找不到变量: IDBIndex ),我不得不将@9.6.8 (最新版本)降级为@9.1.0!

代码语言:javascript
复制
import React, { useLayoutEffect, useState } from "react";
import {
 Text,
 View,
 StyleSheet,
 TextInput,
 TouchableOpacity,
 KeyboardAvoidingView,
 Platform,
 ScrollView,
 Alert,
} from "react-native";
import { AntDesign, Ionicons } from "@expo/vector-icons";
import { doc, setDoc } from "firebase/firestore";
import { db } from "../../firebase/firebaseConfig";

const NewChat = ({ navigation }) => {
 const [input, setInput] = useState("");

 useLayoutEffect(() => {
   navigation.setOptions({
     title: "Add a new Chat",
     headerBackTitle: "Chats",
   });
 }, [navigation]);

 const AddChat = async () => {
   const myDoc = doc(db, "Chats", input);
   const docData = {
     chatName: input,
   };

   setDoc(myDoc, docData).then(() => {
     navigation.goBack();
   });
 };

 return (
   <ScrollView>
     <View
       style={{
         marginTop: 20,
         marginHorizontal: 20,
         borderColor: "black",
         borderWidth: 1,
       }}
     >
       <View style={styles.container}>
         <AntDesign
           name="wechat"
           size={40}
           color="black"
           style={{ alignSelf: "center" }}
         />
         <TextInput
           placeholder="Enter a chat name"
           value={input}
           onChangeText={(text) => {
             setInput(text);
           }}
           style={{ flexGrow: 1, marginLeft: 20 }}
         />
         <TouchableOpacity style={{ alignSelf: "center" }} onPress={AddChat}>
           <Ionicons name="checkmark-done-circle" size={40} color="black" />
         </TouchableOpacity>
       </View>
     </View>
   </ScrollView>
 );
};

const styles = StyleSheet.create({
 container: {
   flexDirection: "row",
   backgroundColor: "white",
   justifyContent: "center",
   height: 60,
 },
});

export default NewChat;
EN

回答 1

Stack Overflow用户

发布于 2022-03-16 05:24:04

函数setDoc()异步返回一个承诺,这意味着在调用该函数之前,您所缺少的只是await关键字。

代码语言:javascript
复制
const AddChat = async () => {
   const myDoc = doc(db, "Chats", input);
   const docData = {
     chatName: input,
   };

   await setDoc(myDoc, docData).then(() => {
     navigation.goBack();
   });
};

编辑:我想我看到了真正的问题,它与v9文档引用有关。尝试在文档引用中使用collection()

代码语言:javascript
复制
const AddChat = async () => {
   const myDoc = doc(collection(db, "Chats"), input);
   const docData = {
     chatName: input,
   };

   await setDoc(myDoc, docData).then(() => {
     navigation.goBack();
   });
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71484652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档