gpt4 book ai didi

Firebase snapshot.data.documents with flutter : what exactly am I doing here?

转载 作者:行者123 更新时间:2023-12-03 23:10:43 28 4
gpt4 key购买 nike

我想更好地了解 firebase 的工作原理?

假设我有一个 firestore 数据库,并且有一个集合(“书籍”),我有几个包含不同信息的文档,如标题、作者、书籍图片的 url、出版日期等。我想在列表中显示这些信息.这是我的代码

class BookList extends StatelessWidget {
@override
Widget build(BuildContext context) {
return StreamBuilder<QuerySnapshot>(
stream: _firestore
.collection('books')
.snapshots(),
builder: (context, snapshot) {
final booksDB = snapshot.data.documents;
List<Book> books = [];
for (var rest in booksDB) {
final restName = rest.data['name'];
final restURL = rest.data['url'];

final book = Book(
name: restName,
url: restURL,
);
books.add(book);
}

return ListView(
children: books,
);
}
},
);
}
}

class Book extends StatelessWidget {
Book({this.name, this.url});

final String name;
final String url;

@override
Widget build(BuildContext context) {
return Stack(
children: <Widget>[
Container(
margin: EdgeInsets.all(10.0),
child: new CachedNetworkImage(
imageUrl: url != null
? url
: 'https://webhostingmedia.net/wp-content/uploads/2018/01/http-error-404-not-found.png',
placeholder: (context, url) => new CircularProgressIndicator(),
errorWidget: (context, url, error) => new Icon(Icons.error),
width: MediaQuery.of(context).size.width - 20,
height: (MediaQuery.of(context).size.width - 20) / 3 * 2,
fit: BoxFit.cover),

),
Positioned(
bottom: 20.0,
left: 20.0,
child: Text(name,
style: kSendButtonTextStyle.copyWith(
backgroundColor: kColorPrimary.withOpacity(0.5),
))),
],
);
}
}

这是我的问题:我在写作时到底在做什么 final booksDB = snapshot.data.documents; ?
我是否正在下载所有文档和所有相关字段?还是我只是在创建一个引用?我想知道我是下载所有信息还是只是我添加到书籍列表中的信息(名称和网址)

这对我来说很重要,因为我想控制我的 firebase 读取,如果我不使用它,我不需要阅读......

我希望这个问题很清楚。谢谢

最佳答案

a collection ("books") and I have several documents containing different info like title, authors, url of the book image, publication date, etc.



这会起作用,但我认为这不是预期的方式。你看,一个书集应该包含几个书的文档。一个文档包含一本书的所有信息。您所做的是将一本书数据传播到多个文档,这样您将无法在同一集合中添加多于一本书。应该是这样的:
_firestore.collection('books').document(bookID); //This accesses one book.
//The name of the document is the book id which you can specify manually or automatically, but it should be unique.

然后在每个文档中,您可以有多个字段。

Here is my question: what am I exactly doing when I am writing final
booksDB = snapshot.data.documents;
? Am I downloading all the documents and all the related fields? Or am I just creating a reference? I would like to know if I am downloading all the info or just the one I am adding to the books list (name and url)



既然你有 snapshot这意味着文件已经在 snapshot 中下载了目的。 booksDB这里仅引用已经下载的文档。

以下是一些有用的引用资料:
  • 使用 Firestore 作为 Flutter 应用的后端 https://youtu.be/DqJ_KjFzL9I
  • 了解 Cloud Firestore https://www.youtube.com/playlist?list=PLl-K7zZEsYLluG5MCVEzXAQ7ACZBCuZgZ
  • 关于Firebase snapshot.data.documents with flutter : what exactly am I doing here?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57883647/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com