在Angular Fire中,你可以同时使用.where()
和.orderBy()
来查询Firestore数据库。然而,你需要注意查询的顺序。
下面是一个使用.where()
和.orderBy()
的示例代码:
import { Component } from '@angular/core';
import { AngularFirestore, AngularFirestoreCollection } from '@angular/fire/firestore';
import { Observable } from 'rxjs';
interface Item {
name: string;
category: string;
price: number;
}
@Component({
selector: 'app-example',
template: `
- {{ item.name }} - {{ item.category }} - {{ item.price }}
`,
})
export class ExampleComponent {
private itemsCollection: AngularFirestoreCollection- ;
items: Observable
- ;
constructor(private afs: AngularFirestore) {
this.itemsCollection = afs.collection
- ('items', ref => {
return ref
.where('category', '==', 'electronics')
.orderBy('price', 'desc');
});
this.items = this.itemsCollection.valueChanges();
}
}
在上述代码中,我们创建了一个itemsCollection
,它使用.where()
和.orderBy()
来查询名为items
的Firestore集合。查询首先使用.where()
筛选出category
字段值为'electronics'的文档,然后再使用.orderBy()
按照price
字段降序排序。
确保你在查询之前导入了必要的模块,并正确配置了Firebase项目。
如果你遇到错误,请检查以下几点:
确保你的Firestore集合中有名为category
和price
的字段,并且它们的类型与代码中的类型匹配。
确保你已经正确安装和配置了Angular Fire模块。
如果你的Firestore数据库规则设置了安全规则,确保你有权限读取这些文档。
希望这可以帮助你解决问题!