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

时间:2018-09-11 13:25:41

标签: node.js firebase google-cloud-firestore

我要更新这样的文档:

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

但是,如果doc user_id不存在,则上面的代码将引发错误。 因此,如何告诉Firestore创建学生(如果不存在),换句话说,是这样的:

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

2 个答案:

答案 0 :(得分:13)

我认为您想使用以下代码:

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

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

  

有关使用Firestore管理数据的详细信息,请检查this link

答案 1 :(得分:4)

如果您需要createdupdated时间戳之类的东西,可以使用此技术:

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 });
}

如果文档没有createdupdated时间戳,它将创建文档,但是仅更改updated时间戳(如果存在)。