не могу создать новую коллекцию в Firebase

# #javascript #reactjs #database #firebase #google-cloud-firestore

#язык JavaScript #реагирует на #База данных #огневая база #google-облако-firestore

Вопрос:

Я не могу создать новую коллекцию в Firebase. Я создал коллекцию под названием User для хранения данных профиля, которая работает, но теперь мне нужен другой для хранения чего-то другого.

Все работает, но это не создает коллекцию на бэкэнде.

И я почти использовал тот же код, который использовал для первой коллекции.

 function Waffen(){   const [open, setOpen] = React.useState(false);  const handleClose = () =gt; setOpen(false);  const handleOpen = () =gt; setOpen(true);   const [Hersteller, setHersteller] = useState(['Baretta',   'Walther']);  const [Modell, setModell] = useState();  const [Kaliber, setKaliber] = useState();  const history = useHistory("");  const [data] = useState({loading: false,});  const { loading } = data;    const handleSubmit = async (e) =gt; {  e.preventDefault();    await setDoc(doc(db, 'Waffen' ,auth.currentUser.uid),     { Hersteller: Hersteller, Modell: Modell, Kaliber: Kaliber   });    setOpen(false)  history.replace("/Profil");  };         return (  lt;div gt;  lt;Button onClick={handleOpen}gt;Meine Waffenlt;/Buttongt;  lt;Modal   open={open}  onClose={handleClose}gt;  lt;Box sx={style} gt;  lt;form gt;   lt;Grid  container  justifyContent="center"  alignItems="center"  spacing={2}  gt;     lt;Autocomplete  disablePortal  id="combo-box-demo"  options={Hersteller}  sx={{ width: 300 }}  renderInput={(params) =gt;    lt;TextField {...params} label='Hersteller'  value={Hersteller} onChange={event =gt;   setHersteller(event.target.value)}  /gt;}  /gt;     lt;Grid itemgt;  lt;TextField sx={{ width: 300}} variant="outlined"   color="secondary" label="Modell" type="text"  name="Modell" value={Modell} onChange={event =gt;   setModell(event.target.value)}gt;  lt;/TextFieldgt;  lt;/Gridgt;   lt;Grid item gt;  lt;TextField sx={{ width: 300}} variant="outlined"   color="secondary" label="Kaliber" type="text"  name="Kaliber" value={Kaliber} onChange={event =gt;   setKaliber(event.target.value)}gt;  lt;/TextFieldgt;  lt;/Gridgt;    lt;Grid itemgt;  lt;button onSubmit={handleSubmit}   className="AnmeldenButton" gt;  {loading ? "Bearbeitet ..." : "Speichern"}  lt;/buttongt;  lt;/Gridgt;   lt;/Gridgt;   lt;/formgt;  lt;/Boxgt;  lt;/Modalgt;  lt;/divgt;   ) ;  }   export default Waffen;  

Комментарии:

1. Пожалуйста, обратите внимание на терминологию, так как это поможет вам получить помощь здесь. Я думаю, что то, что вы называете «базой данных», — это коллекция в Firestore. Можете ли вы подтвердить, что это действительно так, и если да, обновите его в своем вопросе (прямо под ним есть ссылка для редактирования)?

2. Спасибо, что я отредактировал его.

3. Переполнение стека-заведомо неэффективный интерактивный отладчик, поэтому я рекомендую попытаться устранить неполадки самостоятельно и опубликовать результаты. Например, если вы упростите запись до setDoc(doc(db, 'Waffen' ,auth.currentUser.uid), { tesst: true }) (то есть напишете простое жестко закодированное значение), сработает ли это? Если нет, установите точку останова в первой строке кода внутри handleSubmit и запустите в отладчике. Достигает ли он этого кода? Если это так, пройдитесь по нему строка за строкой и проверьте, являются ли переменные такими, какими вы их ожидаете.

4. спасибо, теперь все работает. Это была проблема с правилами безопасности,. Но теперь у меня новая проблема, я не знаю, как создать вложенную коллекцию, я хочу создать вложенную коллекцию в пользовательском документе, но я не могу найти полезный ответ в документации Firebase. Я создал коллекцию с помощью setDoc(doc(бд, «Пользователи», auth.CurrentUser.uid), { Имя: Имя, Возраст: Возраст} ) что еще мне нужно добавить в этот код для создания нескольких файлов вложенных коллекций.