Я пытаюсь добавить документ с автоматически сгенерированным идентификатором в reviews/something, используя:
await addDoc(collection(dbFirestore, "reviews", route.params.id), {
rating: rating,
text: text,
user: {
id: user.id,
username: user.username,
avatar: user.avatar,
},
});
Но я получаю:
Invalid collection reference. Collection references must have an odd number of segments, but reviews/XXX has 2.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Как говорит ошибка, КоллекцияСсылка должен иметь нечетное количество сегментов пути, но у вас их 2. Вам просто нужно указать имя коллекции, поэтому попробуйте выполнить рефакторинг кода, как показано ниже:
// i.e. remove route.params.id
await addDoc(collection(dbFirestore, "reviews"))
Предположим, что обзоры — это коллекция, и вы хотите добавить документ (с автоматически сгенерированным идентификатором) в свою подколлекцию.
await addDoc(collection(dbFirestore, "reviews/document_id/subcollection"), {
rating: rating,
text: text,
user: {
id: user.id,
username: user.username,
avatar: user.avatar,
},
});
Это действительно работает, я не знал, что могу делать это только в подколлекциях, я думал, что могу сделать это и в документах. В таком случае я просто сделаю это так: "reviews/posts/" + route.params.id. Спасибо за помощь!
Спасибо за помощь! На самом деле я знаю, как создать документ с автоматически сгенерированным идентификатором в коллекции. Но мне интересно, как создать его со следующей структурой:
{ reviews: { "MY_ID": { "AUTO_ID": { DATA } }.