Flutter Web 从 Cloud Firestore 中的文档更新值
Flutter Web updating a Value from a Document in Cloud Firestore
我有一个包含歌曲列表的 Cloud Firestore 数据库
我想更新文档喜欢,当用户添加具有相同歌曲标题的歌曲时
我尝试了更新方法,但它并没有真正起作用,值没有得到更新。我想我真的无法访问文档,也许我在 Cloud Firestore 中的结构是错误的。
void _saveLike(Song item) async {
FirebaseFirestore.instance
.doc('Songs/${item.title}')
.update({'likes': item.likes}).then((likes) => print('Song updated'));
}
这是我更新值的方法
void checkSong(Song item) {
bool isSongFound = false;
list.forEach((s) {
if (s.title.trim() == item.title.trim()) {
setState(() {
s.likes++;
});
_saveLike(item);
isSongFound = true;
}
});
if (!isSongFound) {
addSong(Song(title: textfieldControllersong.text, like: false, likes: 0));
}
}
这是我检查歌曲是否已经存在的方法。
是否有更好的方法来使用 Cloud Firebase 或其他数据库服务构建列表?
当您访问这样的文档时:
FirebaseFirestore.instance
.doc('Songs/${item.title}')
数据库在 Songs
集合中查找名为 item.title
的文档,但不存在具有该 ID 的文档。
要根据字段值更新文档,您首先需要run a query找到文档,然后然后运行更新。
类似于:
FirebaseFirestore.instance
.collection('Songs')
.where('title', isEqualTo: item.title)
.get()
.then((snapshot) {
snapshot.docs.forEach((doc) {
doc.reference.update({'likes': item.likes})
});
});
我有一个包含歌曲列表的 Cloud Firestore 数据库
我想更新文档喜欢,当用户添加具有相同歌曲标题的歌曲时 我尝试了更新方法,但它并没有真正起作用,值没有得到更新。我想我真的无法访问文档,也许我在 Cloud Firestore 中的结构是错误的。
void _saveLike(Song item) async {
FirebaseFirestore.instance
.doc('Songs/${item.title}')
.update({'likes': item.likes}).then((likes) => print('Song updated'));
}
这是我更新值的方法
void checkSong(Song item) {
bool isSongFound = false;
list.forEach((s) {
if (s.title.trim() == item.title.trim()) {
setState(() {
s.likes++;
});
_saveLike(item);
isSongFound = true;
}
});
if (!isSongFound) {
addSong(Song(title: textfieldControllersong.text, like: false, likes: 0));
}
}
这是我检查歌曲是否已经存在的方法。
是否有更好的方法来使用 Cloud Firebase 或其他数据库服务构建列表?
当您访问这样的文档时:
FirebaseFirestore.instance
.doc('Songs/${item.title}')
数据库在 Songs
集合中查找名为 item.title
的文档,但不存在具有该 ID 的文档。
要根据字段值更新文档,您首先需要run a query找到文档,然后然后运行更新。
类似于:
FirebaseFirestore.instance
.collection('Songs')
.where('title', isEqualTo: item.title)
.get()
.then((snapshot) {
snapshot.docs.forEach((doc) {
doc.reference.update({'likes': item.likes})
});
});