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

FireStore创建文档(如果不存在)

王高邈
2023-03-14

我想像这样更新文档:

db.collection('users').doc(user_id).update({foo:'bar'})

但是,如果doc user\u id不存在,上述代码将抛出错误。因此,如果不存在,如何告诉Firestore创建学生,换句话说,行为如下:

db.collection('users').doc(user_id).set({foo:'bar'})

共有2个答案

广宏远
2023-03-14

如果需要创建时间戳和更新时间戳,可以使用以下技术:

let id = "abc123";
let email = "john.doe@gmail.com";
let name = "John Doe";
let document = await firebase.firestore().collection("users").doc(id).get();
if (document && document.exists) {
  await document.ref.update({
    updated: new Date().toISOString()
  });
}
else {
  await document.ref.set({
    id: id,
    name: name,
    email: email,
    created: new Date().toISOString(),
    updated: new Date().toISOString()
  }, { merge: true });
}

如果文档不存在创建的时间戳和更新的时间戳,这将创建文档,但仅更改更新的时间戳(如果存在)。

张淳
2023-03-14

我想您应该使用以下代码:

db.collection('users').doc(user_id).set({foo:'bar'}, {merge: true})

这将使用提供的数据设置文档,并保持其他文档字段不变。当您不确定文档是否存在时最好。只需传递将新数据与任何现有文档合并的选项,以避免覆盖整个文档。

有关使用firestore管理数据的更多详细信息,请查看此链接

 类似资料:
  • 我试图实现的很简单。只有当数据库不存在时,我才需要在数据库中创建一个用户条目。 应用程序流程: 使用Firebase身份验证(获取UID)创建用户 客户端代码(创建操作): firestore规则: 附加信息: 正如您可能已经知道的那样,代码不起作用。每次我运行客户端代码时,当前用户都会被一个新文档完全替换。但是,如果我从规则中删除以下行,一切都会正常工作: 但现在问题来了,如何保护用户文档中的数

  • 我在Java的Android应用程序中使用FirebaseSDK,我想将文档的ID存储在文档中。例如,假设我有一个名为学生的类,我想将学生的卷号存储为文档ID以及rollNum字段;我不想随机生成卷号,我想输入卷号,但按照下面的代码我无法这样做。 我正在使用以下代码创建一个文档 即使调用也不会在FiRecovery上设置字段。在这种情况下应该怎么做?我知道解决方法是删除。还有其他可用的解决方案吗?

  • 这是我的代码: 每次执行程序时,我都会创建一个新文档,我只想在不存在的情况下创建它,如果文档存在,只需添加内容即可。

  • 问题内容: 在使用Bluehost进行WordPress安装时,我遇到了一些情况,由于没有上传文件夹,我的WordPress主题遇到了错误。 显然,尽管HostGator可以,Bluehost cPanel WordPress安装程序不会创建此文件夹。 因此,我需要向主题添加代码,以检查文件夹并以其他方式创建该文件夹。 问题答案: 尝试这个: 请注意,这已经是目录的默认模式,并且仍可以被当前的um

  • 问题内容: 我很沮丧,我不知道该怎么做。 基本上,我只想创建一个表,但是如果它存在,则需要将其删除并重新创建,而不是将其截断,但是如果不存在,则可以创建它。 有人可以帮忙吗? 谢谢乔治 问题答案: 放在tablename您的发言之前。 该语句将删除该表(如果存在),但如果不存在则不会引发错误。

  • 我想创建一个集合而不在其中创建任何文档。但不是先创建文档,然后删除文档。我尝试了一些方法,但当我删除文档时,我的集合也被删除了。 Firestore图像