【发布时间】:2021-05-17 20:58:27
【问题描述】:
可以使用.add() 或.set() 在 Firestore 中创建文档。对于这个特定的问题,我们假设文档包含一个具有自己 docId 的属性。
使用.add() 和以下.set() 更新方法:
db.collection("cities").add({
docId: null,
name: 'Tokyo',
country: 'Japan'
});
//... get docId of inserted document via DocumentReference Promise return of add()
//update with docId
db.collection("cities").doc(docId).set(city, {merge: true});
只使用set():
const newCityRef = db.collection('cities').doc();
// Later...
const res = await newCityRef.set({
// ...
});
当我想存储一个拥有自己的 docId 的文档时,使用 .add() 有什么特别的优势吗?另外,总是使用.set() 创建新文档有什么特别的缺点吗?
使用第二种方法时,.doc() 是否总是返回唯一且未使用的 ID?使用第一种方法总是会导致两次写入操作,而仅使用.set() 只需要一次。
【问题讨论】:
-
对不起,我不知道为什么这个问题被标记为重复,只有标题与提供的帖子相同。我知道这两种方法之间的区别,我只想知道将 documentId 存储在字段中时的最佳方法(或最佳实践)是什么。此外,如果 .doc() 始终提供唯一 ID,这也不能回答?
-
@hfontanez 这个问题似乎与问题的意图并不重复,并且提出的确切问题肯定是不同的。没有检查其他重复项,但肯定不是上述问题的重复项。
标签: javascript angular firebase google-cloud-firestore angularfire2