如何在firestore中获取文档,其文档ID存储在列表中?,即只带那些文件



我有一个列表,其中包含特定集合"users"的文档ID,我想获得仅存在于该列表中的文档,并且这些文档在前面提到的"user"集合中。

代码:

getUsers() async
{
double radius = 0.3;
String field = "GeoPosition";
print(currentUser.point.longitude);
GeoFirePoint center = geo.point(latitude: currentUser.point.latitude,  longitude: currentUser.point.longitude);
var collectionRef = Firestore.instance.collection('user_locations').document(currentUser.pincode)  .collection('Users_complete_address_and_geopoint');
this.stream =  geo.collection(collectionRef: collectionRef).within(center: center, radius: radius, field: field, strictMode: false);   
Future<List<certainrangeusers>> users1 =  stream.first.then(
(documents) => documents.map((doc) => certainrangeusers(
id: doc['userPhone'],
)
).toList());  
users1.then((val) async{
QuerySnapshot snapshot = await  Firestore.instance.collection('users').where('id', isEqualTo: val.first.id).getDocuments();
List<User> users = snapshot.documents.map((doc) =>  User.fromDocument(doc)).toList();
setState(() {
this.users = users;
});
});
}

Firebase结构:点击此处查看火球结构

图像格式代码:

点击此处查看图像

  1. 在橙色框中,"users1"是一个具有文档ID的列表。。。用户数10km用户
  2. 在粉红色的框中,我们使用列表的值
  3. 在绿色框中,我们需要传递上面列表中的文档ID

p.s:我使用"val.first.id"只是为了将文档放在列表的第一位。。。。。。。。但我需要带上清单上的所有文件。。。所以这就是我要强调的一点。。。

这里介绍如何从列表id 中搜索所有文档

而不是:

await  Firestore.instance.collection('users').where('id', isEqualTo: 
val.first.id).getDocuments();

使用这个:

await  Firestore.instance.collection('users').where('id', whereIn: 
val).getDocuments();

由于您有一个certainchangeuser的列表,请执行此操作以获取ID。

users1.then((val){
// Get the ids
List ids = [];
for (var value in val){
ids.add(value.id);
}
//Then
QuerySnapshot = await 
Firestore.instance.collection('users').where('id', 
whereIn:ids).getDocuments();
....
});

您可以将事务用于此目的。Firestore交易

相关内容

  • 没有找到相关文章

最新更新