SSo*_*eim 2 html javascript firebase google-cloud-firestore
我正在尝试将我在表单中输入的数据设置为 Firebase 中的字段名称。
它在第 3 行$("#blogUID").val()(博客/blogUID 集合)中运行良好。但是,当我尝试在 Stats/Blogs 集合(第 10 行)中设置字段名称时,出现以下错误:
error.ts:166 Uncaught FirebaseError: Function CollectionReference.doc() requires its first argument to be of type non-empty string, but it was: undefined
at new ui (https://www.gstatic.com/firebasejs/7.17.1/firebase-firestore.js:1:52471)
at Vh (https://www.gstatic.com/firebasejs/7.17.1/firebase-firestore.js:1:164122)
at kh (https://www.gstatic.com/firebasejs/7.17.1/firebase-firestore.js:1:163328)
at _d.doc (https://www.gstatic.com/firebasejs/7.17.1/firebase-firestore.js:1:280502)
at HTMLButtonElement.<anonymous> (http://localhost:8080/TeamSolheim_Page1.html:251:36)
at HTMLButtonElement.dispatch (https://code.jquery.com/jquery-3.5.1.min.js:2:43090)
at HTMLButtonElement.v.handle (https://code.jquery.com/jquery-3.5.1.min.js:2:41074)
Run Code Online (Sandbox Code Playgroud)
1 $("#blog-submit-button").click(function(){
2 // Add a new document in collection
3 // db.collection("Blogs").doc($("#blogUID").val()).set({
4 // blogDate: $("#blogDate").val(),
5 // blogLink: $("#blogLink").val(),
6 // blogTitle: $("#blogTitle").val(),
7 // })
8 // .then(function() {
9 db.collection("Stats").doc($("Blogs").val()).set({
10 $("#blogUID").val(): $("#blogLikes").val(),
11 })
12 .then(function() {
console.log("Document successfully written!");
$("#blog-form").hide();
$("#create-form").show();
})
.catch(function(error) {
console.error("Error writing document 2: ", error);
});
// })
// .catch(function(error) {
// console.error("Error writing document 1: ", error);
// });
})
Run Code Online (Sandbox Code Playgroud)
权限对任何经过身份验证的用户都是开放的:
match /Stats/Blogs {
allow read;
allow write: if request.auth != null;
}
Run Code Online (Sandbox Code Playgroud)
我尝试过的事情:
var _temp = $("#blogUID").val();
console.log(_temp);
db.collection("Stats").doc("Blogs").set($("#blogUID").val, 123)
//db.collection("Stats").doc("Blogs").val().set({
//_temp: $("#blogLikes").val(),
//"$$_temp.val()": $("#blogLikes").val(),
//$$_temp: $("#blogLikes").val(),
//window['_temp']: $("#blogLikes").val(),
//$("#blogUID").val: $("#blogLikes").val(),
//_temp: $("#blogLikes").val(),
//'$("#blogUID").val()': $("#blogLikes").val(),
//doc.$("#blogUID"): $("#blogLikes").val(),
//$("#blogUID").val(): $("#blogLikes").val(),
// })
Run Code Online (Sandbox Code Playgroud)
这是繁荣的最终密码...
$("#blog-submit-button").click(function(){
// Add a new document in collection
db.collection("Blogs").doc($("#blogUID").val()).set({
blogDate: $("#blogDate").val(),
blogLink: $("#blogLink").val(),
blogTitle: $("#blogTitle").val(),
})
.then(function() {
var _temp = $("#blogUID").val();
console.log(_temp);
db.collection("Stats").doc("Blogs").set({
[_temp]: $("#blogLikes").val()
})
.then(function() {
console.log("Document successfully written!");
$("#blog-form").hide();
$("#create-form").show();
})
.catch(function(error) {
console.error("Error writing document 2: ", error);
});
})
.catch(function(error) {
console.error("Error writing document 1: ", error);
});
})
Run Code Online (Sandbox Code Playgroud)
向下移动到格式化的答案:
.set() 需要一个对象——你在第一次尝试时就“接近”了它。尝试这个:
const blogger = $("#blogUID").val() // jQuery
const bloggerLikes = $("#blogLikes").val() // jQuery
db.collection("Stats").doc("Blogs").set( { [ blogger]: bloggerLikes } )
Run Code Online (Sandbox Code Playgroud)
您需要[ ] 来使用博主值作为索引/字段名
| 归档时间: |
|
| 查看次数: |
614 次 |
| 最近记录: |