Добавить документ с автоматически сгенерированным идентификатором в подколлекцию?

Я пытаюсь добавить документ с автоматически сгенерированным идентификатором в 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.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
31
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Как говорит ошибка, КоллекцияСсылка должен иметь нечетное количество сегментов пути, но у вас их 2. Вам просто нужно указать имя коллекции, поэтому попробуйте выполнить рефакторинг кода, как показано ниже:

// i.e. remove route.params.id
await addDoc(collection(dbFirestore, "reviews"))

Спасибо за помощь! На самом деле я знаю, как создать документ с автоматически сгенерированным идентификатором в коллекции. Но мне интересно, как создать его со следующей структурой: { reviews: { "MY_ID": { "AUTO_ID": { DATA } }.

user19087775 10.05.2022 19:52
Ответ принят как подходящий

Предположим, что обзоры — это коллекция, и вы хотите добавить документ (с автоматически сгенерированным идентификатором) в свою подколлекцию.

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. Спасибо за помощь!

user19087775 10.05.2022 20:01

Другие вопросы по теме