Firebase 为什么我的DocumentSnapshot DocumentID在我的数据库中返回null?
您好,经过两天的测试和查看所有StackOverflow帖子后,我仍然不明白为什么当我尝试获取doc.ID时会得到null 我的课是要提出问题Firebase 为什么我的DocumentSnapshot DocumentID在我的数据库中返回null?,firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,您好,经过两天的测试和查看所有StackOverflow帖子后,我仍然不明白为什么当我尝试获取doc.ID时会得到null 我的课是要提出问题 import 'package:cloud_firestore/cloud_firestore.dart'; class Question { final String id; final String text; final String answer; final String authorId; final String re
import 'package:cloud_firestore/cloud_firestore.dart';
class Question {
final String id;
final String text;
final String answer;
final String authorId;
final String receiverId;
final Timestamp timestamp;
Question({
this.id,
this.authorId,
this.text,
this.answer,
this.timestamp,
this.receiverId
});
factory Question.fromDoc(DocumentSnapshot doc){
return Question(
id: doc.documentID,
text: doc["text"],
answer: doc["answer"],
authorId: doc["authorId"],
receiverId: doc["receiverId"],
timestamp: doc["timestamp"],
);
}
}
我在按下按钮后创建问题
final currentUserId = Provider.of<UserData>(context, listen: false).currentUserId;
Question question = Question(
text: _questionController.text,
receiverId: widget.user.id,
authorId: currentUserId,
timestamp: Timestamp.fromDate(DateTime.now())
);
DatabaseService.sendQuestion(question: question);
我用addActivityQuestion创建通知
static void addActivityQuestion({
Question question,
}) async {
activitiesRef.document(question.receiverId).collection("userActivities").add({
"authorId": question.authorId,
"questionId": question.id,
"question": question.text,
"timestamp": Timestamp.fromDate(DateTime.now()),
});
}
在我的数据库中,我有:
结果在我的数据库中,我的问题id为“null”。为什么谢谢你的时间,我还是开始放纵了。这是我在stackoverflow上的第一篇帖子:)当你在这里创建问题实例时
Question question = Question(
text: _questionController.text,
receiverId: widget.user.id,
authorId: currentUserId,
timestamp: Timestamp.fromDate(DateTime.now())
);
您没有将id传递给构造函数,这就是它为null的原因
向firestore添加新条目时,您可以获得documentID,如下所示:
DocumentReference docRef = await
Firestore.instance.collection('userQuestions').add({
"question" : question.text,
"receiverId" : question.receiverId,
"authorId" : question.authorId,
"timestamp" : question.timestamp,
});
print(docRef.documentID);
question.id
的值可能为空。您的调试器或日志对此有何说明?是的,我在调试中什么都不知道,只是它在数据库中显示null,因为我无法在数据库中插入文档的id(查看屏幕):)谢谢,是的,的确如此,但是它不可能添加尚未创建的文档的id。我在上面被卡住了4天,这有点烦人。如果有人能帮我,他会帮我编辑我的答案,并包括如何在添加文档时获取id。
DocumentReference docRef = await
Firestore.instance.collection('userQuestions').add({
"question" : question.text,
"receiverId" : question.receiverId,
"authorId" : question.authorId,
"timestamp" : question.timestamp,
});
print(docRef.documentID);