【问题标题】:db not defined firebase firestoredb 未定义 firebase firestore
【发布时间】:2021-09-30 12:51:06
【问题描述】:

我要做一个博客网站,可以在网站内保存和发布书面文章。我正在使用 firebase firestore 将我的数据保存在那里,但唯一的问题是当我运行它时,它说 db 没有在 HTMLButtonElement 中定义

HTML

   <script
      type="module"
      src="https://www.gstatic.com/firebasejs/9.1.0/firebase-app.js"
    ></script>
    <script
      type="module"
      src="https://www.gstatic.com/firebasejs/9.1.0/firebase-firestore.js"
    ></script>

    <script type="module" src="js/editor.js">
      firebase.initializeApp({
        apiKey: "AIzaSyBbHBS9rdHrbP6g7BG4_kPP9XV1vCiVewU",
        authDomain: "blog-web-49668.firebaseapp.com",
        projectId: "blog-web-49668",
        storageBucket: "blog-web-49668.appspot.com",
        messagingSenderId: "561111016179",
        appId: "1:561111016179:web:eef336738659e3fbfb0d86",
      });

      var db = firebase.firestore();
      db.settings({ timestampsInSnapshots: true });
    </script>

Javascprit

publishBtn.addEventListener('click', () => {
    if (articleField.value.length && blogTitleField.value.length) {
        // generating id 
        let letters = 'abcdefghijklmnopqrstuvwxyz';
        let blogTitle = blogTitleField.value.split("-").join("-");
        let id = '';
        for (let i = 0; i < 4; i++) {
            id += letters[Math.floor(Math.random() * letters.length)];
        }

        // setting up docName
        let docName = `${blogTitle}-${id}`;
        let date = new Date(); // for published at info

        //access firestore with db variable;
        db.collection("blogs").doc(docName).set({
            title: blogTitleField.value,
            article: articleField.value,
            bannerImage: bannerPath,
            publishedAt: `${date.getDate()} ${months[date.getMonth()]} ${date.getFullYear()}`
        })
            .then(() => {
                console.log('date entered');
            })
            .catch((err) => {
                console.error(err);
            });
    }
})

【问题讨论】:

  • 您是否在 firebase 控制台上创建了任何数据库?
  • 不,我没有,我正在尝试将数据保存到 Firestore
  • 首先你需要在firebase控制台上创建数据库,然后你可以在上面保存数据。
  • 我在firebase中创建了一个数据库,但问题仍然存在

标签: javascript html firebase google-cloud-firestore


【解决方案1】:

您需要从script 标签中删除src="js/editor.js"

<script type="module" src="js/editor.js">
   firebase.initializeApp({...
   // ...
</script>

应该是

<script type="module">
   firebase.initializeApp({...
   // ...
</script>

【讨论】:

  • 我仍然没有工作,现在它说“firebase is not defined”
【解决方案2】:

我有同样的问题,我是这样解决的

你好,试着把这段代码放在“firebase.js”中:

let firebaseConfig = {
  //your information
  };

 // Initialize Firebase
 firebase.initializeApp(firebaseConfig);

 const db = firebase.firestore();

 export async function insert(item) {
    try {
     const response = await db.collection("blogs").add(item);
     return response;
    } catch (error) {
     throw new Error(error);
      }
 }

 export async function getItems(uid) {
    try {
       let items = [];
       const response = await db
      .collection("blogs")
       .where("userid", "==", uid)
       .get();

       response.forEach(function (item) {
       items.push(item.data());
        });

       return items;
     } catch (error) {
        throw new Error(error);
       }
  }
   
   export async function update(id, completed) {
       try {
          let docId;
          const doc = await db.collection("blogs").where("id", "==", id).get();
          doc.forEach((i) => {
          docId = i.id;
          });

        await db.collection("blogs").doc(docId).update({ completed: completed 
         });
       } catch (error) {
            throw new Error(error);
         }
    }
  export { db };

并在js文件中导入:

    import { insert, getItems, update, db } from "./firebase.js";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多