Firestore在同一UID下添加多个数据

时间:2019-04-19 20:41:21

标签: javascript firebase google-cloud-firestore

我问了一个关于类似主题的问题,并得到了回答,但是又遇到了一些问题,所以他们告诉我要在另一个主题下提问。

我正在尝试使用UID将数据添加到Firestore云中。我有UID,并且没有问题地添加了UID,但是当我要添加另一个ID时,它将删除旧数据并对其进行重写。我想在同一UID下添加多个数据。

$('#form').submit(function(e) {
e.preventDefault();
let name = $('[name = name]').val();
let cityLAT = $('[name = cityLAT]').val();
let cityLONG = $('[name = cityLONG]').val();
let user = firebase.auth().currentUser;
let uid;
if(user != null) {
    uid = user.uid;
}
const ref = db.collection('campaigns').doc(uid);
ref.set({ name: name,
cityLAT: cityLAT,
cityLONG: cityLONG },{ merge: true });
$('[name = name]').val('');
$('[name = cityLAT]').val('');
$('[name = cityLONG]').val('');

1 个答案:

答案 0 :(得分:0)

如果要“使用相同的uid添加数据”(即使用以下DocumentReferencedb.collection('campaigns').doc(uid)将数据添加到文档中),则有两种可能性:

  1. 使用update()方法“更新此DocumentReference所引用的文档中的字段”。 但是,您必须知道“如果将更新应用于不存在的文档,更新将失败。”
  2. set()选项中使用merge方法 ,即使文档不存在,该方法也将有效 。另请参见此文档:https://firebase.google.com/docs/firestore/manage-data/add-data#set_a_document

因此,在您的情况下,使用上述的set()方法看起来像:

const ref = db.collection('campaigns').doc(uid);
ref.set(
   { name: name,
     cityLAT: cityLAT,
     cityLONG: cityLONG },
   { merge: true }
);