Я использую Google Firebase и узел.
Я пишу функцию, которая возвращает определенный фрагмент данных в зависимости от идентификатора, указанного в запросе.
У меня есть коллекция в Google Firebase под названием screams, и у меня также есть коллекция под названием comments , Одно из полей в моей коллекции комментариев называется screamId. если идентификатор в этом поле совпадает с идентификатором идентификатора scream, который я использую в своем запросе, он должен поместить данные этого документа в пустой массив, который я установил.
в Postman, он успешно возвращая мне часть данных, которую я запросил (отдельный документ scream), но он не выталкивает документ комментариев из коллекции комментариев в пустой массив, который я установил. Вместо этого я просто возвращаю пустой массив
Вот что я получаю от Почтальона:
{
"body": "ice scream",
"createdAt": "2020-01-27T17:56:11.885Z",
"userHandle": "joel",
"screamId": "cdQnSrHtsRzYmKL6dSoS",
"comments": []
}
внутри этого пустого массива должен быть объект, содержащий мой комментарий, из моей базы данных .
вот код моей функции:
exports.getScream = (req, res) => {
let screamData = {};
db.doc(`/screams/${req.params.screamId}`)
.get()
.then(doc => {
if (!doc.exists) {
return res.status(404).json({ error: "Scream not found" });
}
screamData = doc.data();
screamData.screamId = doc.id;
return db
.collection("comments")
.where("screamId", "==", req.params.screamId)
.get();
})
.then(data => {
screamData.comments = [];
data.forEach(doc => {
screamData.comments.push(doc.data());
});
return res.json(screamData);
})
.catch(err => {
console.error(err);
res.status(500).json({ error: err.code });
});
};