首页 > 解决方案 > 当父集合不存在时,拒绝在firestore中创建集合项的适当方法?

问题描述

我有一个onRequest云功能,可以将一个项目插入我的 firestore 实例:

...
db.collection('game').doc(game_id).collection('board').doc(board_id).add(new_piece)
...

如果game_id我的数据库中不存在该文档,则该文档new_piece仍被插入,大概在孤立gameboard集合下(它们在 Firestore 控制台中显示为斜体并略微褪色)。

这似乎是标准行为。但是,如果我想在父路径不存在的情况下拒绝创建文档,那么最好的方法是什么?

一个明显的方法是首先检查集合game的存在。board但是,这会增加额外的延迟和更多的.then块(我不想在这里考虑单子!)。这是推荐的方式吗?

有没有一种方法可以简单地指示 firestore 不要在给定的插入路径中创建孤立的文档和集合并返回错误(由调用者处理)?

标签: firebasegoogle-cloud-firestore

解决方案


不,这是不可能的。如果您想知道某物是否存在,则必须对其进行查询。


推荐阅读