Firebase 为什么我的DocumentSnapshot DocumentID在我的数据库中返回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

您好,经过两天的测试和查看所有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 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);