如何使用Firestore set()方法更新字段且保留必填的creation date和name?
解决方案:Firestore保留必填字段并替换其他字段
先获取目标文档的当前数据,提取
creation date和name这两个必填字段的值存好
用Firestore的get()方法拿到文档快照,从快照的data()里把这两个字段的值取出来,示例代码如下:const docRef = db.collection('screens').doc('目标文档ID'); const docSnap = await docRef.get(); if (docSnap.exists) { const { 'creation date': savedCreationDate, name: savedName } = docSnap.data(); // 暂存这两个必填字段的值 }准备用户输入的新自定义字段数据
把用户本次要保存的自定义字段整理成一个对象,比如newCustomFields,里面可以是任意用户自定义的键值对。合并必填字段和新自定义字段
将暂存的必填字段值与新自定义字段合并为一个新对象:const updatedData = { 'creation date': savedCreationDate, name: savedName, ...newCustomFields };用
set()方法写入文档
直接调用set()覆盖整个文档:await docRef.set(updatedData);
这种操作后,文档只会保留creation date、name和本次新传入的自定义字段,之前的其他字段会被全部清空替换,完全匹配你的需求。不需要提前知晓原有自定义字段的名称,也不用手动删除,set()会直接用新对象覆盖整个文档,而我们已经把必填字段包含在新对象中,所以不会丢失。
内容的提问来源于stack exchange,提问作者Taha Sami
相关产品推荐
相关产品推荐

