【问题标题】:Can't add data to firestore, no errors无法将数据添加到 Firestore,没有错误
【发布时间】:2021-05-19 23:04:31
【问题描述】:

我正在尝试将数据添加到 firebase 数据库:firestore。

下面的代码大部分取自文档,并没有将任何内容写入数据库,尽管读取数据没有问题。

<script>
            
            var firebaseConfig = {
                apiKey: "...",
                authDomain: "...",
                databaseURL: "...",
                projectId: "...",
                storageBucket: "...",
                messagingSenderId: "...",
                appId: "...",
                measurementId: "..."
            };


            let fb = document.createElement('script');
            fb.src = "https://www.gstatic.com/firebasejs/8.6.1/firebase-app.js";
            fb.onload = function(){
                
            let gA = document.createElement('script');
            gA.src = "https://www.gstatic.com/firebasejs/8.6.1/firebase-analytics.js";
            gA.onload = function(){
                
                firebase.initializeApp(firebaseConfig);
                firebase.analytics();

                let auth = document.createElement('script');
                auth.src= "https://www.gstatic.com/firebasejs/8.6.1/firebase-auth.js";
                auth.onload = function(){

                    let fs = document.createElement('script');
                    fs.src = "https://www.gstatic.com/firebasejs/8.6.1/firebase-firestore.js";
                    fs.onload = function(){

                        firebase.auth().onAuthStateChanged((user) => {
                            if (user) {
                                
                                var uid = user.uid;

                                var db = firebase.firestore();

                                db.collection("cities").add({
                                    name: "some_ad_id",
                                    coordinations: "41,41",
                                    user_id: uid,
                                })
                                .then((docRef) => {
                                    console.log("Document written with ID: ", docRef.id);
                                })
                                .catch((error) => {
                                    console.error("Error adding document: ", error);
                                });


                                var cities = db.collection("cities").doc('B3O4OwYq4RLXHSQeOTQg');

                                cities.get().then((doc) => {
                                    if (doc.exists) {
                                        console.log("Document data:", doc.data());
                                    } else {
                                        // doc.data() will be undefined in this case
                                        console.log("No such document!");
                                    }
                                }).catch((error) => {
                                    console.log("Error getting document:", error);
                                });

                                

                            } else {
                                // User is signed out
                            }
                        });
                    }
                    document.body.appendChild(fs);
                    
                    firebase.auth().signInAnonymously()
                    .then(() => {
                        // Signed in..
                        console.log('signed in');
                    })
                    .catch((error) => {
                        var errorCode = error.code;
                        var errorMessage = error.message;
                        console.log('not signed in');
                        // ...
                    });
                };
                document.body.appendChild(auth);
                
            };
            document.body.appendChild(gA);
            
            };

            document.body.appendChild(fb);
        </script>

如果我将库 firebase-app.js 更改为 firebase.js,一切正常(读取和写入),但我当然会收到警告说我正在使用库的开发版本,这里是警告我明白了:

您似乎正在使用 Firebase JS SDK 的开发版本。 将 Firebase 应用部署到生产环境时,建议仅导入 您打算使用的各个 SDK 组件。 对于 CDN 构建,这些可通过以下方式获得 (替换为组件的名称 - 即身份验证、数据库等): https://www.gstatic.com/firebasejs/5.0.0/firebase-.js

知道是什么导致了这个问题吗?

我尝试了以下方法,但都没有奏效:

  • 直接嵌入编写 HTML 的库
  • 等待每次初始化 firebase 或 firebase 产品

谢谢

【问题讨论】:

    标签: javascript firebase web google-cloud-firestore


    【解决方案1】:

    我设法解决了这个问题,我将 firestore 的初始化移到了 onAuthStateChanged 方法之外,我说的是这一行:

    var db = firebase.firestore();

    我不知道为什么会这样,我使用 await 来确保 firestore() 方法已完成但没有完成

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-05
      • 2021-11-30
      • 1970-01-01
      • 1970-01-01
      • 2019-04-03
      • 1970-01-01
      • 2022-10-24
      • 2014-04-04
      相关资源
      最近更新 更多