javascript - 数据未发布..帮助! html、js、firebase

标签 javascript html

我正在尝试将数据发布到 firebase,但它没有被发布.. 我尝试使用 addEventListener 来发布数据,但没有成功。 这是我的 html,带有包含 firebase sdk 的外部 main.js:

<BODY>
<TABLE align="center">
    <caption></caption>
    <tr>
        <td width=500 height=150 colspan=8 style="text-align: center"><strong
            style="font-size:50">Add an Entry</strong></td>
    </tr>
    <tr>
        <TD height=500 colspan=8>

            <form id="info">
                <table align="center">

                    <tr>
                        <td>Name:</td>
                        <th><INPUT type="text" Size="40" Maxlength="35"
                            Name="personal-name" id="name" placeholder="Your Name Here">
                        </th>

                    </tr>
                    <tr>
                        <td>Email:</td>
                        <th><INPUT type="text" Size="40" Maxlength="40"
                            Name="personal-email" id="email" placeholder="Your Email Here">
                        </th>

                    </tr>
                    <tr>
                        <td>Address:</td>
                        <th><textarea rows="5" width="550" type="text" Size="40"
                                Maxlength="40" Name="address" id="address"
                                placeholder="__"></textarea>
                        </th>

                    </tr>
                </table>
                <br>
                <div align="center">
                    <button id="refresh">refresh</button>
                    <button id="addBtn" >submit</button>
                </div>

            </form>
        </td>
    </tr>
</Table>
</Body>
<script src="https://www.gstatic.com/firebasejs/7.16.1/firebase-app.js"></script>
<script src="main.js"></script>    </BODY>

这是我的 main.js:

//Firebase 配置,然后是事件监听器

var firebaseConfig = {
apiKey: ******************************,
authDomain: ******************************,
databaseURL: ******************************,
projectId: ******************************,
storageBucket: ******************************,
messagingSenderId: ******************************,
appId: ******************************,
measurementId: ******************************,
};

firebase.initializeApp(firebaseConfig);
firebase.analytics();

form.addEventListener("submit", (e)=>{
e.preventDefault();
firebase.firestore().collection("information").add({
    name:document.getElementById('name').value,
    email:document.getElementById('email').value,
    address:document.getElementById('address').value
    })
});

最佳答案

4件事:

确保使用表单的 id 定义表单变量

const form = document.getElementById("info");

您缺少分析和 firestore sdk src(我包含了 auth,以防您打算使用它)

<!-- Firebase App (the core Firebase SDK) is always required and must be listed first -->
<script src="https://www.gstatic.com/firebasejs/7.16.1/firebase-app.js"></script>
<!-- If you enabled Analytics in your project, add the Firebase SDK for Analytics -->
<script src="https://www.gstatic.com/firebasejs/7.16.1/firebase-analytics.js"></script>
<!-- Add Firebase products that you want to use -->
<script src="https://www.gstatic.com/firebasejs/7.16.1/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.16.1/firebase-firestore.js"></script>

在 Firebase 控制台中,将数据库规则的条件更改为 true(如果尚未更改)

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}

为了提高性能,您应该将产品初始化和集合存储在变量中

const analytics = firebase.analytics();

const firestore = firebase.firestore(); 
const information = firestore.collection("information"); 

const form = document.getElementById("info");
form.addEventListener("submit", (e)=>{
  e.preventDefault();
  information.add({
    name:document.getElementById('name').value,
    email:document.getElementById('email').value,
    address:document.getElementById('address').value
  })
});

或者,您可以创建一个带有名称的文档,以便更快地查询

information.doc(document.getElementById('name').value).set({
    name:document.getElementById('name').value,
    email:document.getElementById('email').value,
    address:document.getElementById('address').value
 })

关于javascript - 数据未发布..帮助! html、js、firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63025476/

相关文章:

HTML 5 和 XHTML 1.1

html - div 不会垂直对齐

javascript - javascript 和@media 相互干扰吗?

javascript - 在 JavaScript 中,我/应该如何将 async/await 与 XMLHttpRequest 一起使用?

javascript - 包括带有 html 和 node.js 的 js 文件

javascript - JS : search for specific string in textarea

javascript - meteor 向现有集合添加新数据

html - 如何使用 CSS 制作一组流过浏览器窗口边缘的图像?

javascript - 当从作用域中删除对象时,它会隐藏 Angularjs 中的其余部分

javascript - 无法将内容附加到 FormData()