У меня есть две коллекции, posts
и tags
. posts
содержит postId
и другие метаданные, включая tags
. Вот как будет выглядеть post
:
{
"tags": [
"tag1",
"tag2",
...
],
"message": "test message"
...
}
Возвращает пост выше с postId
.
Используя Ax ios, я получаю эти данные в своей функции. Я хочу взять каждый тег, поместить его в коллекцию tags
вместе с postId
, связанным с ним.
Пример коллекции tags
:
tags: {
tag1: {
"postId1",
"postId2"
},
tag2: {
"postId1",
"postId3"
}
}
Я застрял, добавляя теги к своей собственной коллекции в Firebase, и я попытался использовать тег forEach
и обновить tags
коллекция одна за другой, но это не работает для меня.
Код, который у меня сейчас есть:
db.collection("posts")
.add(oneNewPost)
.then((doc) => {
// add the post body to the "posts" collection
const resPost = oneNewPost;
resPost.postId = doc.id;
res.json(resPost);
})
.then(() => {
// DOESNT WORK HERE --> overwrites changes in firebase "tags" collection
let batch = db.batch();
resPost.tags.forEach((doc) => {
const docRef = db.collection("tags").doc(doc);
batch.update(docRef, { postId: resPost.postId }, { merge: true });
});
batch.commit().then(() => {
return res.json({...resPost});
});
})
.catch((err) => {
res.status(500).json({ error: "something went wrong" });
console.error(err);
});
Пожалуйста, дайте мне знать, если что-то неясно!