# #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), { Имя: Имя, Возраст: Возраст} ) что еще мне нужно добавить в этот код для создания нескольких файлов вложенных коллекций.