#javascript #firebase #google-cloud-firestore
#javascript #firebase #google-облако-firestore
Вопрос:
У меня есть документ, созданный в процессе регистрации, который создает документ со следующим свойством:
username: "GOOOOD"
Теперь я пытаюсь add
вызвать новое свойство firstName
для документа, чтобы оно выглядело так:
username: "GOOOOD"
firstName: "Roger"
Однако add
функция, похоже, не работает:
function ProfileContainer() {
const [profile, setProfile] = useState();
const [{ user }, dispatch] = useStateValue();
const [firstName, setFirstName] = useState("");
// add first and last name
const handleClick = () => {
if (user) {
db.collection("users").doc(user).collection("profile").doc(user).add({
firstName: firstName,
});
}
};
return (
<div className="profileContainer">
<div className="name__input">
<input
type="text"
placeholder="First Name"
onChange={(e) => setFirstName(e.target.value)}
value={firstName}
/>
</div>
<button onClick={handleClick}>Update</button>
</div>
</div>
</div>
);
}
К сожалению, add
функция, похоже, не работает.
Я получаю следующую ошибку:
Ошибка типа: firebase_utils__WEBPACK_IMPORTED_MODULE_4_.db.collection(…).doc(…).collection(…).doc(…).add не является функцией
set
кажется, работает, но я не хочу удалять весь документ.
Ответ №1:
add()
всегда создает новый документ. Если это не то, что вы пытаетесь сделать, то вам не следует его использовать.
Если вы пытаетесь добавить новое поле в существующий документ, вместо этого вам следует использовать update () , как показано в документации.
db.collection("users").doc(user).collection("profile").doc(user).update({
firstName: firstName,
});
Комментарии:
1. Спасибо, Дуг! Ты лучший!