【问题标题】:How to update a document by ID using Firebase Modular SDK (V9)?如何使用 Firebase Modular SDK (V9) 按 ID 更新文档?
【发布时间】:2022-06-11 12:50:38
【问题描述】:

每次用户登录时,此代码都会创建一个新文档,但我的任务是更新现有的相同用户 ID 文档(如果存在),否则创建一个新文档。如何在 V9 Firebase 中做到这一点?

当前代码

setDoc(
  query(collectionRef),
  //     db.collection('users').doc(user.uid).set(

  {
    email: user.email,
    lastSeen: serverTimestamp(),
    photoURL: user.photoURL
  }, {
    merge: true
  }
);

访问文档 UID 的旧代码:

【问题讨论】:

    标签: javascript firebase google-cloud-firestore next.js


    【解决方案1】:

    setDoc()中的第一个参数应该是DocumentReference

    import { doc, setDoc } from "firebase/firestore"
    
    const docRef = doc(db, "users", user.uid);
    
    setDoc(docRef, {
      email: user.email,
      lastSeen: serverTimestamp(),
      photoURL: user.photoURL
    }, {
      merge: true
    }).then(() => console.log("Document updated"));
    

    【讨论】:

    • updateDoc 和 setDoc 有什么区别?我试图使用updateDoc,但它抛出错误说No Document to update,而setDoc 工作正常。
    【解决方案2】:

    或者,您也可以使用 updateDoc()。

    import {
      doc,
      updateDoc
    } from "firebase/firestore"
    
    update(doc(db, "users", user.uid, {
      email: user.email,
      lastSeen: serverTimestamp(),
      photoURL: user.photoURL
    }).then(() => console.log("Document updated"));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-01
      • 1970-01-01
      • 2023-02-10
      • 1970-01-01
      • 2022-01-18
      • 2022-01-19
      相关资源
      最近更新 更多