Javascript 如何在if语句中比较Firebase中存储的值?

Javascript 如何在if语句中比较Firebase中存储的值?,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,几天来,我一直在到处寻找答案,但仍然无法找到答案 首先,让我向您展示我想要实现的目标,以下是该计划的图片: 下面是我的Firestore数据库的图片: 我希望能够检查用户是否输入了roomID在本例中为5575,如上图所示,程序应首先检查firestore数据库中是否存在该roomID。当我单击“加入”按钮时,控制台中没有任何内容 这是到目前为止我的代码: const name12 = document.getElementById("oponentname") ; co

几天来,我一直在到处寻找答案,但仍然无法找到答案

首先,让我向您展示我想要实现的目标,以下是该计划的图片:

下面是我的Firestore数据库的图片:

我希望能够检查用户是否输入了roomID在本例中为5575,如上图所示,程序应首先检查firestore数据库中是否存在该roomID。当我单击“加入”按钮时,控制台中没有任何内容

这是到目前为止我的代码:

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文件中,我必须给它一个默认值。这就是为什么我一直得到那个错误,因为它是空的。