我对安全规则进行了一些测试,它们将一个数据集添加到本地Firestore模拟器(使用@firebase/testing
库,与here描述的非常相似)。测试基本上是有效的,所以我认为数据真的可以到达Firestore。
但我在模拟器UI中看不到它。
http://localhost:4000/> Firestore emulator >转到模拟器显示空数据
相关的,我想知道“项目ID”参数在仿真中的作用是什么?设置Firebase应用程序对象时需要它,但它在哪里使用?模拟器没有提供模拟项目列表供我选择。
困惑。
复制方式(根据要求):
$ git clone git@github.com:akauppi/GroundLevel-es6-firebase-web.git
$ cd GroundLevel-es6-firebase-web/rules-test
# You only need to work in the rules-test subproject
$ npm install
...
在另一个终端(同一个文件夹)中:
$ npm run start # leave running...
$ npm run test:symbols
测试应通过(跳过一项)。
测试的运行已经将数据准备好到模拟器,并且它应该仍然在那里。项目ID abc
(请参见“使用会话:输出上的“abc”)。
http://localhost:4000/>转到模拟器
预期:
- 能够选择项目
abc
- 能够看到预处理的数据(顺便说一句。
data.js
)
实际: - 没有项目id选择
- 没有数据
我知道的太少了,不知道发生了什么。也许@firebase/testing
永远不会到达模拟器,我应该使用普通的Firebase客户端,而不是?
3条答案
按热度按时间q35jwt9p1#
模拟器UI仅显示活动项目,即在
firebase use
中使用的那个。如果测试使用此项目ID,则其数据在模拟器中可见。如果他们使用一些其他的,测试工作,但模拟器用户界面是在循环之外。
不知道这是不是设计的。如果您知道文档中的某个地方解决了这个问题,我很乐意在这里提到它。
firebase-tools
8.6.0ttcibm8c2#
我在模拟器中使用了一个假的项目ID,就像API密钥一样。我不得不使用我的
projectId
来解决这个问题。多亏了这个GitHub问题。当调用
admin.initializeApp()
时,您需要设置正确的projectId
,然后数据将显示出来。vawmfj5a3#
今天我也碰到了这个。
对我来说,问题是我不小心从项目中删除了
.firebaserc
文件(这是gitignored)。因此,模拟器UI根本不会显示任何Firestore文档。
用
firebase use --add
重新添加项目解决了这个问题。但我在这上面浪费了很多时间。如果缺少任何必需的配置文件,人们希望仿真器应该抛出致命错误。😬