例如,如果我有一个Stream
类型的QuerySnapshot
正在订阅文档集合,并且现在将新文档添加到该集合中,则Stream
仅读取新文档还是重新读取整个收藏集?
答案 0 :(得分:1)
每个新添加或更改的文档都需要再次读取。
答案 1 :(得分:1)
我想这就是你要的。如果您订阅的是Stream
,而您的Stream
为QuerySnapshots
,那么您可以选择在每次添加或更改新文档时重新加载整个数据库,或者只是获取新文档
//Just gets new documents
StreamBuilder<QuerySnapshot>(
stream: Firestore.instance.collection(//Collection).snapshots(),
builder: (BuildContext context,
AsyncSnapshot<QuerySnapshot> asyncSnapshot) {
if (asyncSnapshot.hasData) {
//This is the difference
List<DocumentChange> snapshot =
asyncSnapshot.data.documentChanges;
snapshot.forEach((DocumentChange change) {}
//Get all documents
StreamBuilder<QuerySnapshot>(
stream: Firestore.instance.collection('Test').snapshots(),
builder: (BuildContext context,
AsyncSnapshot<QuerySnapshot> asyncSnapshot) {
if (asyncSnapshot.hasData) {
//This is the difference
List<DocumentSnapshot> snapshot =
asyncSnapshot.data.documents;
snapshot.forEach((DocumentSnapshot snapshot) {
DocumentChange
自上次快照以来已更改的文档数组。如果这是第一个快照,则所有文档都将作为“已添加的更改”出现在列表中。
DocumentSnapshot
每次添加或更改新文档时都会获取所有文档的列表。
请紧记@Doug Stevenson所说,您需要为每个添加或更改的文档付费。