当前位置: 首页 > 知识库问答 >
问题:

Fi恢复"在哪里"查询不按预期工作

徐德海
2023-03-14

我试图做一个简单的查询,从我的火还原数据库,但我错过了一些非常明显的东西。我试着在网上寻找,但没有什么工作。对于一些背景,我有一个“cf”集合,我试图查询一个“hsc”值等于“1”的对象,但我没有得到任何回报。

exports.getOneTodo = (request, response) => {
    db
        .collection('cf')
        .where("hsc", "==", "1") 
        .get()
        .then((doc) => {

            if (!doc.exists) {
                return response.status(404).json(
                    { 
                        error: 'Todo not found' 
                    });
            }
            TodoData = doc.data();
            TodoData.todoId = doc.id;
            return response.json(TodoData);
        })
        .catch((err) => {
            console.error(err);
            return response.status(500).json({ error: error.code });
        });
};

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

我正在通过邮递员测试这个。我试图改变firebase规则,使之适用于任何情况,但仍然没有任何效果。

更新:以下是我如何初始化我的数据库

const admin = require('firebase-admin');

admin.initializeApp();

const db = admin.firestore();

module.exports = { admin, db };

共有1个答案

张姚石
2023-03-14

您的代码需要一个文档,但必须为查询返回多个文档做好准备。在查询对象上运行get()时,将生成一个QuerySnapshot对象。从API文档中可以看到,它没有exists属性。对该属性的检查将始终为“false”。您需要做的是检查结果,首先查看是否有任何文档,然后获取第一个文档:

    db
        .collection('cf')
        .where("hsc", "==", "1") 
        .get()
        .then((qsnapshot) => {
            if (qsnapshot.docs.length > 0) {
                const dsnapshot = qsnapshot.docs[0];
                // send the response using dsnapshot.data()
            }
            else {
                // send the response saying nothing was found
            }
        })

 类似资料:
  • 问题内容: 我有带日期对象的文档。 初始化Firestore的代码: 查询代码: 我总是在获取所有记录,并且看起来where子句没有得到应用。在Firebase控制台上,我看到的存储为时间戳。 Firebase控制台中的文档: 问题答案: Cloud Firestore查询是不可变的,这意味着您无法更改现有查询的属性。如果通过调用方法更改值,它将成为一个新查询。因此,要解决此问题,请链接所有方法调

  • 我想从例程中查询我的锻炼集合以获取最新的锻炼。这意味着我使用查询我的例程Key,按开始时间戳降序排列,然后限制为1,然后取锻炼的第一个Key/Id。 但是这不起作用。和单独工作但不组合。我做错了什么?

  • 我已经读过这个答案,如何组合多个And和Or通过方法名,我同意它。但是,我不认为我的情况像行动的复杂,你可以看到。只是“and”和“OR”查询条件组合,这在SQL方式中是相当容易的,但我只想通过JPA方式来实现。

  • 问题内容: 我已经为此奋斗了2天,尽我所能用Google搜索和stackoverflow,但是我无法解决。 我正在构建一个简单的节点应用程序(+ Express + Mongoose),其登录页面重定向到主页。这是我的服务器JS代码: 登录页面向发出POST请求,在此验证发布的数据。这可行。我可以在Node控制台中看到“我们在这里:’/ credentials’”。 然后是问题:res.redir

  • 为什么我的搜索函数永远不会执行“else”(如果没有找到结果,else应该回显文本)?我在尝试显示所有结果时也遇到了一些问题(没有选择搜索标准,只需按搜索按钮)。我将上传页面的全部代码,因为我不知道您是否也需要HTML部分来解决问题。我知道这是一个很大的代码块,但如果可以的话,请帮忙。谢谢 以下是我的代码链接:http://pastebin.com/BXe1C0dr

  • 我有一个自定义案例类异常: 在我的 dao 中,我有一个从数据库中提取对象的方法,该方法返回 future,如果此将来失败,我将抛出我的 RecordNotFoundException 异常: 在另一个方法中,我调用getPerson方法,所以我将恢复添加到另一个方法中,当未来使用RecordNotFoundException失败时,我想返回一些东西: 因此,基本上,我希望当getPerson失败