首页 > 解决方案 > Firebase“添加”数据到现有文档不起作用

问题描述

我有一个在注册过程中创建的文档,该文档创建了具有以下属性的文档:

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功能似乎不起作用。

我收到以下错误:

TypeError: firebase_utils__WEBPACK_IMPORTED_MODULE_4 _.db.collection(...).doc(...).collection(...).doc(...).add 不是函数

set似乎有效,但我不想删除整个文档。

标签: javascriptfirebasegoogle-cloud-firestore

解决方案


add() 总是创建一个新文档。如果这不是你想要做的,那么你不应该使用它。

如果您尝试向现有文档添加新字段,则应使用update()代替,如文档中所示。

      db.collection("users").doc(user).collection("profile").doc(user).update({
        firstName: firstName,
      });

推荐阅读