Firebase «добавить» данные в существующий документ не работает

#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. Спасибо, Дуг! Ты лучший!