【发布时间】:2020-01-25 01:49:46
【问题描述】:
熟悉使用 html 表单更新 Firestore 数据库。当我在事件侦听器之外对.set进行硬编码时,它会更新数据库,但是当我尝试在事件侦听器内执行完全相同的操作时,我会收到这些错误,它们无法到达 Cloud Firestore 后端并且 XMLHTTPRequest 无法加载站点由于访问控制权限。我设置了它,以便任何人都可以访问数据库,所以我不明白为什么它不起作用。
document.getElementById("pushMe").addEventListener("click", function submitForm(){
let first_name = document.getElementById("firstname").value;
let last_name = document.getElementById("lastname").value;
console.log(first_name, last_name);
docref.set({
first_name: first_name,
last_name: last_name
}, { merge: true }).then(function(){
console.log("User saved!");
}).catch(function(error){
console.log("Error: ", error);
});
db.collection("test").doc("test_user").get().then(function(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(function(error) {
console.log("Error getting document:", error);
});
console.log("GOODBYE!");
});
这是我尝试使用的事件侦听器代码。当我从这个函数中取出 decree.set 块时,它会按照预期的方式更新数据库。我们有一个 html 表单,我们希望它在单击提交按钮时提交。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" src="https://www.gstatic.com/firebasejs/7.7.0/firebase-app.js"></script>
<script type="text/javascript" src="https://www.gstatic.com/firebasejs/7.7.0/firebase-firestore.js"></script>
</head>
<body>
<h2>HTML Forms</h2>
<form id="submit1">
First name:<br>
<input id= "firstname" type="text" name="firstname">
<br>
<input id= "lastname" type="text" name="lastname">
<br><br>
<button type="submit" id="pushMe"> Submit! </button>
</form>
<script type="text/javascript" src="web_app_test.js"></script>
</body>
</html>
还有其他人遇到过这些问题吗?
【问题讨论】:
标签: javascript html firebase google-cloud-firestore