Gio*_*Gio 13 firebase google-cloud-firestore
我正在使用Firestore,我想删除特定对象中的字段.我可以删除文档中的字段,这要归功于:
fieldName: firebase.firestore.FieldValue.delete()
Run Code Online (Sandbox Code Playgroud)
但如果我有一个像这样的对象:
songList {
songName1: "HelloWorld",
songName2: "AnotherSong",
songName3: "andTheLastOne"
}
Run Code Online (Sandbox Code Playgroud)
为了删除字段songName3,我将无法执行以下操作:
songList.songName3: firebase.firestore.FieldValue.delete()
Run Code Online (Sandbox Code Playgroud)
有没有办法删除对象内的字段?或者我应该删除整个对象,在没有第3个字段的情况下重建它并保存它?
提前致谢,
Cri*_*ano 20
带有特殊"FieldValue.delete()"的"点符号"应该有效.
试试这个:
Map<String, Object> deleteSong = new HashMap<>();
deleteSong.put("songList.songName3", FieldValue.delete());
FirebaseFirestore.getInstance()
.collection("yourCollection")
.document("yourDocument")
.update(deleteSong);
Run Code Online (Sandbox Code Playgroud)
它对我有用.
请参阅:https ://firebase.google.com/docs/firestore/manage-data/delete-data https://firebase.google.com/docs/firestore/manage-data/add-data
小智 20
这对我来说一般
firebase
.firestore()
.collection('collection-name')
.doc('doc-id')
.set({ songlist : {
[songName]: firebase.firestore.FieldValue.delete()
}
}, { merge: true });
Run Code Online (Sandbox Code Playgroud)
今天找到了这个话题,想添加我的解决方案。我正在使用点符号。以下将通过使用从歌曲列表中删除特定歌曲firestore.FieldValue.delete();。我正在使用用 TypeScript 编写的 Node.js firebase-admin 包:
import * as admin from 'firebase-admin';
export async function removeSong(trackId: string, song: string) {
try {
const updates = {};
// Dot Notation - will delete the specific song from songList
updates[`songList.${song}`] = admin.firestore.FieldValue.delete();
// Not necessary, but it's always a good practice
updates['updatedAt'] = admin.firestore.FieldValue.serverTimestamp();
await firestore.collection('songs').doc(trackId).update(updates);
return true
} catch (error) {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5984 次 |
| 最近记录: |