Javascript 如何在if语句中比较Firebase中存储的值?
几天来,我一直在到处寻找答案,但仍然无法找到答案 首先,让我向您展示我想要实现的目标,以下是该计划的图片: 下面是我的Firestore数据库的图片: 我希望能够检查用户是否输入了roomID在本例中为5575,如上图所示,程序应首先检查firestore数据库中是否存在该roomID。当我单击“加入”按钮时,控制台中没有任何内容 这是到目前为止我的代码:Javascript 如何在if语句中比较Firebase中存储的值?,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,几天来,我一直在到处寻找答案,但仍然无法找到答案 首先,让我向您展示我想要实现的目标,以下是该计划的图片: 下面是我的Firestore数据库的图片: 我希望能够检查用户是否输入了roomID在本例中为5575,如上图所示,程序应首先检查firestore数据库中是否存在该roomID。当我单击“加入”按钮时,控制台中没有任何内容 这是到目前为止我的代码: const name12 = document.getElementById("oponentname") ; co
const name12 = document.getElementById("oponentname") ;
const roomid = document.getElementById("idinput");
const joinButton = document.getElementById("joinButton");
var firebaseConfig = {
my configuration is here
}
firebase.initializeApp(firebaseConfig);
const db = firebase.firestore();
joinButton.addEventListener("click", function(){
if (roomid.value == db.collection('game').doc(roomid.value).get()) {
console.log("Succes");
}
});
您必须查询具有该roomID的文档,然后检查其中一个是否匹配
const get_room = (id) => {
return db.collection('game')
.doc(id)
.get()
.then(function(doc) {
return doc.exists
})
.catch(function(err) {
console.log(err)
})
请注意,这是一个异步函数,因此要检查输入的房间id是否存在,应使用promise或async/await。我的实现使用承诺
joinButton.addEventListener("click", function(){
get_room(roomid.value).then((doc) => { if (doc) console.log("Succes"); })
});
您必须查询具有该roomID的文档,然后检查其中一个是否匹配
const get_room = (id) => {
return db.collection('game')
.doc(id)
.get()
.then(function(doc) {
return doc.exists
})
.catch(function(err) {
console.log(err)
})
请注意,这是一个异步函数,因此要检查输入的房间id是否存在,应使用promise或async/await。我的实现使用承诺
joinButton.addEventListener("click", function(){
get_room(roomid.value).then((doc) => { if (doc) console.log("Succes"); })
});
我想你应该这样修理它:
db.collection("game")
.doc(roomid.value)
.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(function (error) {
console.log("Error getting document:", error);
});
您可以阅读更多内容我认为您应该这样修复它:
db.collection("game")
.doc(roomid.value)
.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(function (error) {
console.log("Error getting document:", error);
});
您可以阅读更多这里没有任何编写数据库的代码,因此我不确定您希望发生什么。我已经在另一个JS文件中完成了这一部分,并且我可以成功地写入数据库。我现在唯一需要的是如何将输入字段中的输入与databaseget()中的roomid值进行比较,以返回一个承诺。它不直接返回数据。按照文档中的说明学习如何获取文档:我已经阅读了文档中的说明,但我仍然无法理解它…您这里没有任何编写数据库的代码,因此我不确定您希望发生什么。我已经在另一个JS文件中完成了这一部分,并且我可以成功地写入数据库。我现在唯一需要的是如何将输入字段中的输入与databaseget()中的roomid值进行比较,以返回一个承诺。它不直接返回数据。按照文档中的说明学习如何获取文档:我已经阅读了文档中的说明,但仍然无法理解它…我在您的解决方案中不断遇到此错误:CollectionReference.doc()不能用空路径调用。它无法识别roomid.value,idk whi发现错误,傻瓜我。在创建输入文本的HTML文件中,我必须给它一个默认值。这就是为什么我一直收到那个错误,因为它是空的。我一直收到你的解决方案的这个错误:CollectionReference.doc()不能用空路径调用。它无法识别roomid.value,idk why我发现了这个错误,傻瓜。在创建输入文本的HTML文件中,我必须给它一个默认值。这就是为什么我一直得到那个错误,因为它是空的。