如何在 React Native 中使用 Firestore 数据库进行用户过滤?
How to user filter with Firestore database in React Native?
我想过滤 firestore 查询以获取所有不包含特定值的文档。
我用了@react-native-firebase
import firestore from '@react-native-firebase/firestore';
const getUnreadDocs = async () => {
const unreadDocs = await firestore()
.collection('rooms')
.doc('aDRKtxbhG9g5IfbKcsa4')
.collection('messages')
.where('seen', 'not-in', ['7B6jaZngXeN7V4r3eRoDBdlcj6m2'])
.get();
console.log(`unreadDocs`, unreadDocs);
};
docs return 来自查询
query-return-from-docs
如何存储数据?
我们有collection
rooms Collection -> Docs -> fields
|
V
messages Collection -> Docs -> fields
rooms-collection-img
messages-collection-img2
应该查询什么return?
正如我们在查询中提到的,文档不应在 seen
字段
中包含 7B6jaZngXeN7V4r3eRoDBdlcj6m2
所以,查询应该return只有一个文档,即
messages-collection-img1
in
/not-in
运算符检查当前 single-value 字段的值是否 exists/does 在您指定的值列表中不存在。但是您的 seen
字段是一个数组,不适用于此运算符。
相反,您需要对其使用 array-contains
来检查值 是否存在 。没有等效的 array-does-not-contain
运算符来检查数组字段中是否不存在值。
另见:
- Firestore get documents where value not in array?
我想过滤 firestore 查询以获取所有不包含特定值的文档。
我用了@react-native-firebase
import firestore from '@react-native-firebase/firestore';
const getUnreadDocs = async () => {
const unreadDocs = await firestore()
.collection('rooms')
.doc('aDRKtxbhG9g5IfbKcsa4')
.collection('messages')
.where('seen', 'not-in', ['7B6jaZngXeN7V4r3eRoDBdlcj6m2'])
.get();
console.log(`unreadDocs`, unreadDocs);
};
docs return 来自查询
query-return-from-docs
如何存储数据?
我们有collection
rooms Collection -> Docs -> fields
|
V
messages Collection -> Docs -> fields
rooms-collection-img
messages-collection-img2
应该查询什么return?
正如我们在查询中提到的,文档不应在 seen
字段
7B6jaZngXeN7V4r3eRoDBdlcj6m2
所以,查询应该return只有一个文档,即
messages-collection-img1
in
/not-in
运算符检查当前 single-value 字段的值是否 exists/does 在您指定的值列表中不存在。但是您的 seen
字段是一个数组,不适用于此运算符。
相反,您需要对其使用 array-contains
来检查值 是否存在 。没有等效的 array-does-not-contain
运算符来检查数组字段中是否不存在值。
另见:
- Firestore get documents where value not in array?