【发布时间】:2020-12-05 01:14:42
【问题描述】:
我有一个帖子模型,它有一个发布时间和过期时间,就像这样
class BuyerPost{
..some other properties...
final Timestamp postTime;
final Timestamp expireTime;
我的预期结果是过期的帖子不会包含在我的查询中。如果我可以自动从数据库中删除它们就更好了,但我也可以将它们从我的查询中排除。
我曾尝试使用endAt 和orderBy 来实现它,但它失败了
Stream <List<BuyerPost>> get sellerBuyerPosts {
try {
return buyerPostCollection.where('status',isEqualTo: 'available')
.orderBy('expireTime',descending: true)
.endAt([Timestamp.now()])
.snapshots()
.map(yieldSellerBuyerPosts);
}catch(e){
print(e.toString());
return null;
}
}
我也尝试在客户端进行过滤,但出现类型运算符错误,因为 <,> 不适用于时间戳
List<BuyerPost> yieldSellerBuyerPosts(QuerySnapshot snapshot) {
try {
return snapshot.documents.map((doc) {
return BuyerPost(
...some properties here...
postTime: doc.data['postTime']?? Timestamp(0,0),
expireTime: doc.data['expireTime']?? Timestamp(0,0),
);
}).where((post) =>
post.expireTime>Timestamp.now()
).toList();
}catch(e){
print(e.toString());
return null;
}
}
是我使用了错误的方法还是我只是在某个地方犯了一个小错误。
【问题讨论】:
标签: firebase flutter google-cloud-firestore