是否可以在Flask Web App中本地测试Firestore(无需部署网站)

时间:2019-10-30 17:01:04

标签: firebase google-cloud-firestore

我正在做一个小型项目,在该项目中,数据在一个页面上上传到Firestore,然后在同一网站的另一个页面上检索。当网站托管在localhost上时,是否可以测试Firestore集成?

在本地主机上部署网站后尝试访问Firestore功能时,我得到:

“ google.api_core.exceptions.Failed前提条件:400 Cloud Firestore API不适用于数据存储模式项目。”错误。

我能找到的唯一文档是:“ How to deploy Flask Crud API with Firestore...

注意: 1.我查看了该错误,并再次检查了我的项目是否处于Firestore模式(我是从Firebase控制台创建的项目),然后在Flask应用程序中使用以下代码对数据库进行身份验证:

import firebase_admin
from firebase_admin import credentials
cred = credentials.Certificate("path/to/serviceAccountKey.json")
firebase_admin.initialize_app(cred)

对此我们将不胜感激!

  1. 我尝试研究模拟器,但是大多数文档都说它仅适用于Cloud函数,而我试图测试简单的操作。

感谢您对此进行调查。

2 个答案:

答案 0 :(得分:1)

该错误消息表示您的Cloud Firestore数据库位于Datastore mode instead of Native mode中。除非您从未将任何内容保存到数据库中,否则无法更改模式。

尝试创建一个新项目,创建一个新的Cloud Firestore数据库,然后选择纯模式:

  • 在GCP控制台中,系统会要求您选择。
  • 在Firebase控制台中,它将自动选择“纯模式”。

答案 1 :(得分:0)

我发现了问题。我正在使用带有新生成的私钥的cred = certificate.Certificate(“ path / to / serviceAccountKey.json”)代码对我的Firestore数据库进行身份验证,但是,系统为此使用了旧的$ GOOGLE_APPLICATIONS_CREDENTIALS。

将其更新为新密钥可以解决此问题,是的,我能够在Localhost上测试FLASK应用与Firestore的集成:)

{% for ingredient in drink.ingredients.all %}} 
   {{ingredient.ingredient_name}}{% if not forloop.last %},{% endif %}
{% endfor %}