我正在尝试使用onDelete触发器查询Firestore。我正在获取已删除的医生id。
这是一个用户文档,我想获取被删除用户的"朋友"。Friends
是用户文档中的一个数组。几个小时以来,我一直在尝试我见过的许多解决方案来吸引这些朋友,但都没有奏效。
我尝试过的:
const friendsOfDeletedUser = await fs .collection("users") .where( "friends", "==", fs.collection("users").doc(ctx.params.userId).id ) .get();
const friendsOfDeletedUser = await fs .collection("users") .where( "friends", "array-contains", fs.collection("users").doc(ctx.params.userId).id ) .get();
const friendsOfDeletedUser = await fs .collection("users") .where( "friends", "==", fs.collection("users").doc(ctx.params.userId).path ) .get();
const friendsOfDeletedUser = await fs .collection("users") .where( "friends", "==", "/users/" + ctx.params.userId ) .get();
const friendsOfDeletedUser = await fs .collection("users") .where( new FieldPath("friends"), "==", fs.collection("users").doc(ctx.params.userId).id ) .get();
这些friends
数组包含其他用户的id作为文档引用。
有趣的是,当我将这些字段作为普通的文档属性时,查询仍然没有返回任何内容。我怀疑firestore版本有什么问题,没有正确查询。因为我尝试过的东西应该在某些版本的FS中工作。
我正在本地模拟器中运行查询。
我一定在监督一些非常明显的事情。提前谢谢。
如果friends
是DocumentReference
的数组,那么查询时需要该引用,而不是文档ID。
const friendsOfDeletedUser = await fs
.collection("users")
.where(
"friends",
"array-contains",
fs.collection("users").doc(ctx.params.userId) // no .id or .path
)
.get();
这将返回friends
数组中包含对已删除用户的引用的所有文档。