[英]Firestore document update is failing
我在 firestore 中有我正在尝试更新的文档。 这些更新对老用户来说是成功的,但对新用户来说是失败的。 我有列表视图,用户可以在其中查看所有添加的文档。 他们单击“编辑”,然后导航到详细的文档视图,他们可以在其中进行更改和保存。
我收到的错误
[VERBOSE-2:ui_dart_state.cc(209)] Unhandled Exception:
[cloud_firestore/not-found] Some requested document was not found.
我正在将文档 ID 从列表视图传递到单个文档编辑视图;
data: docId
在编辑页面中,我正在加载来自上一页的用户 ID 和文档 ID。
class Edit extends StatefulWidget {
final DataModel data;
Edit({required this.data});
String ui = FirebaseAuth.instance.currentUser!.uid;
@override
_EditState createState() => _EditState();
}
在保存按钮上,我正在使用以下内容更新 firestore;
ElevatedButton.styleFrom(primary: Colors.redAccent),
onPressed: () async {
DocumentReference edit = FirebaseFirestore
.instance
.collection('edit')
.doc(ui)
.collection('edit')
.doc(widget.data.documentId);
edit.update({
});
cloud_firestore/not-found
错误意味着在指定的 id 下找不到文档。 请确保该 ID 确实存在于您的数据库中。
如果您使用的是本地模拟器,请确保您正在访问正确的数据库。
如果您使用的是持久存储(离线 firestore 数据),则可能是它仍然有旧数据,或者您的设备没有连接到 inte.net,因此没有当前数据。
错误消息告诉您找不到要更新的引用的文档。 有几种方法可以将数据更新到 Cloud Firestore:
所以你只需要为你的用例使用正确的操作。
如果您想在不知道文档是否存在的情况下更新文档,则需要像这样使用带有 merge() 选项的 set()(此示例适用于 Java):
// 更新一个字段,如果文档不存在则创建该文档。
Map<String, Object> data = new HashMap<>(); data.put("capital", true); db.collection("cities").document("BJ").set(data, SetOptions.merge());
使用 auth.currentUser 时的另一个经典问题是 Auth object 可能未完全初始化,因此 auth.currentUser.uid 为 null。如文档中所述,您应该使用 onAuthStateChanged() 观察器或检查auth.currentUser 不是 null。
尝试:
ElevatedButton.styleFrom(primary: Colors.redAccent),
onPressed: ()
async {
DocumentReference edit = FirebaseFirestore .instance .collection('edit') .doc(FirebaseAuth.instance.currentUser.uid) .collection('edit') .doc(widget.data.documentId);
edit.update({ });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.