Почему мой DocumentSnapshot DocumentID возвращает ноль в моей базе данных? - PullRequest
0 голосов
/ 21 февраля 2020

Здравствуйте, после 2 дней тестирования и просмотра всех сообщений в StackOverflow, я до сих пор не понимаю, почему, когда я пытаюсь получить свое c .ID, я получаю нулевое значение.

Это мой класс для создания вопроса

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"],
    );
  }
}

Я создаю вопрос после onPress

 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); 

Я отправляю данные в мой Database_service


  static void sendQuestion({Question question}) {
    questionsRef.document(question.id).collection("userQuestions").add({
      "question" : question.text,
      "receiverId" : question.receiverId,
      "authorId" : question.authorId,
      "timestamp" : question.timestamp,
    });
        DatabaseService.addActivityQuestion(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()),
      });

  }

И в моей базе данных у меня есть это: результат в моей базе данных, у меня "null" для question.id, почему
img

Спасибо за ваше время, я все еще начинаю потворствовать мне, это мой первый пост на stackoverflow:)

1 Ответ

0 голосов
/ 21 февраля 2020

Когда вы создаете экземпляр вопроса здесь

Question question = Question(
  text: _questionController.text,
  receiverId: widget.user.id,
  authorId: currentUserId,
  timestamp: Timestamp.fromDate(DateTime.now())
);

, вы не передаете идентификатор конструктору, поэтому он является нулевым.

Вы можете получить documentID, когда Вы добавляете новую запись в FireStore, как это:

DocumentReference docRef = await 
Firestore.instance.collection('userQuestions').add({
  "question" : question.text,
  "receiverId" : question.receiverId,
  "authorId" : question.authorId,
  "timestamp" : question.timestamp,
});
print(docRef.documentID);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...