Firestore получить документ после создания - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь перейти с Mon go на FireStore. Я стараюсь, чтобы мои API работали стабильно. У меня возникают проблемы с выяснением, как получить только что созданный документ (добавленный в коллекцию) в FireStore. Вот что у меня есть:

loginRouter.route("/create/:email").post((req, res) => {
  const email = req.params.email
  const returning = req.query.returning || false
  if (email) {
    loginsRef.add({
      email,
      loginDate: new Date(),
      returning
    })
      .then(snapshot => {
        loginsRef.get(snapshot.id).then(login => {
          console.log(login.id)
          res.status(200).send(login)
        }).catch(err => {
          console.log(err)
          res.status(204)
        })

      })
      .catch(err => {
        serverLogger({ route: "api/logins/create", message: err })
        res.status(500).send("Trouble creating login")
      })
  } else {
    serverLogger({ route: "api/logins/create", message: "No email" })
    res.status(400).send("Please include an email")
  }
})

Этот код успешно создаст документ входа в FireStore и вернет идентификационный номер документа. Затем я хотел бы получить этот полный объект обратно из FireStore, что, как я знаю, вы не можете сделать в вызове create. Прямо сейчас второй вызов возвращает undefined. Я ожидал получить полный документ обратно на вызов. Я хотел бы, чтобы это происходило из базы данных, а не только из памяти, основанной на успешном обращении к FireStore, в качестве доказательства концепции для более сложных конечных точек. Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 13 апреля 2020

Я хотел вернуться назад и опубликовать рабочий код, который у меня был. Спасибо за помощь ранее, Даг! Что я не понимал в методах FireStore, так это то, что вместо «collection.get (ID)» нужно было делать «collection.DO C (ID) .get». Это была хорошая кривая обучения, чтобы пройти, зная, что вам нужно углубиться в следующий уровень базы данных, чтобы получить единственное число c. Коллекция всегда будет возвращать все документы.

  const email = req.params.email
  const returning = req.query.returning || false
  if (email) {
    loginsRef.add({
      email,
      loginDate: new Date(),
      returning
    })
      .then(docRef => {
        loginsRef.doc(docRef.id).get().then(login => {
          res.status(200).send(login.data())
        }).catch(err => {
          res.status(204)
        })

      })
      .catch(err => {
        serverLogger({ route: "api/logins/create", message: err })
        res.status(500).send("Trouble creating login")
      })
  } else {
    serverLogger({ route: "api/logins/create", message: "No email" })
    res.status(400).send("Please include an email")
  }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...