在文档中指出,您可以通过将字符串与另一个字符串值进行比较来进行查询,例如:
citiesRef.where('name', '>=', 'San Francisco');
citiesRef.where('state', '>=', 'CA').where('state', '<=', 'IN');
Run Code Online (Sandbox Code Playgroud)
然后文档中的角色部分展示了如何在 Firestore 文档中应用角色。然而,它没有显示如何查询这个..但如上面的示例所示,这应该像下面这样工作:
citiesRef.where(`roles.${user.uid}`, '>', '');
Run Code Online (Sandbox Code Playgroud)
所以上面的查询应该返回所有大于空字符串的值的文档,对吧?
在我的代码中,我有包含一个文档的组织集合:
{
"name": "MyAmazingCompany",
"roles": {
"my-user-uid": "owner"
}
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试查询我担任以下角色的组织:
organizationsRef.where(`roles.${user.uid}`, '>', '');
Run Code Online (Sandbox Code Playgroud)
我将Uncaught Error in onSnapshot: Error: Missing or insufficient permissions.进入浏览器控制台(使用 firebase npm 包版本 5.1.0 并尝试使用 5.0.3)。
只是为了确保我应该有权访问该文档,测试了以下查询,它有效并且返回该组织。
organizationsRef.where(`roles.${user.uid}`, '==', 'owner');
Run Code Online (Sandbox Code Playgroud)
那么有什么问题吗?
还有人声称它应该有效:Firestore select where is not null
这是我的规则:
service cloud.firestore {
match /databases/{database}/documents {
function isSignedIn() {
return request.auth != null;
}
function …Run Code Online (Sandbox Code Playgroud)