我有parties
个文档,分别有author
和users
map .我正在try 查询用户创作的所有文档,或者用户在users
映射中的所有文档.
问题是下面的代码只考虑or
条件中的usersPath != null
子句,我不知道为什么:
const getParties = onCall({}, async (request) => {
const userPath = new FieldPathAdmin("users", request.auth.token.email);
return dbAdmin
.collection("parties")
.where(
Filter.or(
Filter.where(userPath, "!=", null),
Filter.where("author.uid", "==", request.auth.uid)
)
)
.get();
}
如果我交换这where
个条款,那么它只考虑author.uid == request.auth.uid
个条款.
导入和设置:
import { initializeApp } from "firebase-admin";
import { getFirestore, Filter, FieldPath } from "firebase-admin/firestore";
import { onCall } from "firebase-functions/v2/https";
const app = initializeApp({...});
当事人文档如下所示:
{
author: {
uid: "foo-bar"
...
},
users: {
example@test.com: {
uid: "quux-baz"
email: "example@test.com",
joinedAt: 1705951291621
},
...
}
}
注意:我使用firebase-admin
包而不是firebase
,因为这是在使用可调用函数的 node 服务器上,而不是在浏览器客户端上.
FireBase-管理员版本11.9.0