当前位置: 首页 > 知识库问答 >
问题:

如何更新单个firebase firestore文档

殳阳飙
2023-03-14

验证后,我试图在/users/处查找用户文档,然后我想使用auth对象中的数据以及一些自定义用户属性更新文档。但我得到一个错误,更新方法不存在。有没有办法更新单个文档?所有firestore文档示例都假定您拥有实际的文档id,并且没有任何示例使用where子句进行查询。

firebase.firestore().collection("users").where("uid", "==", payload.uid)
  .get()
  .then(function(querySnapshot) {
      querySnapshot.forEach(function(doc) {
          console.log(doc.id, " => ", doc.data());
          doc.update({foo: "bar"})
      });
 })

共有3个答案

壤驷志学
2023-03-14

在原始代码中更改此行

doc.update({foo: "bar"})

到这个

doc.ref.update({foo: "bar"})

应该有用

但是更好的方法是使用批处理写入:https://firebase.google.com/docs/firestore/manage-data/transactions#batched-writes

林弘文
2023-03-14

检查用户是否已经存在,然后只需。更新,或。如果未设置,则设置:

    var docRef = firebase.firestore().collection("users").doc(firebase.auth().currentUser.uid);
    var o = {};
    docRef.get().then(function(thisDoc) {
        if (thisDoc.exists) {
            //user is already there, write only last login
            o.lastLoginDate = Date.now();
            docRef.update(o);
        }
        else {
            //new user
            o.displayName = firebase.auth().currentUser.displayName;
            o.accountCreatedDate = Date.now();
            o.lastLoginDate = Date.now();
            // Send it
            docRef.set(o);
        }
        toast("Welcome " + firebase.auth().currentUser.displayName);
    });
}).catch(function(error) {
    toast(error.message);
});
傅乐湛
2023-03-14

您可以精确地执行以下操作(https://firebase.google.com/docs/reference/js/v8/firebase.firestore.DocumentReference):

var db = firebase.firestore();

db.collection("users").doc(doc.id).update({foo: "bar"});
 类似资料:
  • 问题内容: 如果我忽略了一些很明显的东西,就可以选择应用程序;我刚刚找到了并且正在尝试使用它来更新一个JSON值而不影响周围的数据。 我想将结果传送到,更新值,然后将更新的JSON传送到。就像是 到目前为止,我已经使用一起破解了它,但是在查看了一些运算符示例之后,我确定我不需要这些。 这是一个JSON示例- 在保留其余JSON的同时,如何使用set ? 问题答案: 您可以使用运算符设置对象的值。

  • 我在Elasticsearch中索引了一个文档,如下所示: 我尝试通过以下命令更新计数字段: 但是,我收到了以下错误: 我到底做了什么,却不见了?我在http://www.elasticsearch.org/guide/reference/api/update.html跟踪文件,但它不起作用。 此外,我还包括父字段: 但还是没有成功。有人能帮我解决这个错误吗?

  • 问题内容: 我看到这对笨论坛 考虑以下代码 这显然是您在Codeigniter中这样做的方式 实际上这是行不通的。我看了一下生成的SQL,结果甚至没有提到联接。 有谁知道如何使用Codeigniter的Active Record数据库类对联接进行更新? 问题答案: 我发现的一种解决方案是完全删除联接并将联接条件移到“ where”函数中,此外,您还需要更改更新字符串以包括新表。

  • 问题内容: 我发现以下脚本: MongoDB具有“ multi”标志,用于更新多个文档,但是我无法使它与mongoose一起使用。这还不被支持还是我做错了什么? 问题答案: 目前,我认为Mongoose中存在一些问题,请参阅:https : //groups.google.com/forum/#%21topic/mongoose- orm/G8i9S7E8Erg 和https://groups.g

  • 我有一个mongodb集合的mongoose模式,我将其定义如下: 在数据库集合中,我当前有一个文档,它包含除以外的所有属性的值,用于测试目的。我有一个服务器endpoint,当被调用时,它应该发出一个PUT请求来更新文档并向sketches数组中添加一个对象: 在这个web服务中,我基本上试图通过用户名选择用户文档,用户名作为参数传递给url字符串,如下所示: 由于某种原因,当我尝试使用具有以下

  • 我已经用UUID作为每个文件名的密钥将文件上传到s3 bucket,我要求将文件密钥作为存储的UUID,但当下载时,我需要将下载的文件名作为实际文件名,例如:foo.png aws S3-0E8221B9-9BF4-49D6-B0C0-D99E86F91F8E.png上存储的文件下载文件名应为:foo.bar 我尝试过设置Content-Disposition元数据,但在下载文件时仍然包含UUID