如何在Angular中将Firestore自动生成的文档ID存入campaignID
解决方案
Firestore自动生成的文档ID可以通过两种方式存入campaignID字段,以下是具体实现:
方法一:一步写入(推荐)
先创建带自动ID的文档引用,直接将ID嵌入字段后写入,仅需一次Firestore操作:
saveCampaign(campaignFields: Campaign) { // 生成带自动ID的文档引用 const docRef = doc(collection(this.firestoreDB, 'mail_campaign')); // 将ID添加到营销活动字段中 const campaignWithId = { ...campaignFields, campaignID: docRef.id }; // 写入完整数据 return from(setDoc(docRef, campaignWithId)); }
方法二:先写入再更新
先调用addDoc生成文档,再用返回的引用获取ID并更新文档,适合需要先写入基础数据再补充ID的场景:
saveCampaign(campaignFields: Campaign) { return from( addDoc(collection(this.firestoreDB, 'mail_campaign'), campaignFields) .then(docRef => { // 获取自动生成的文档ID const campaignId = docRef.id; // 更新文档添加campaignID字段 return updateDoc(docRef, { campaignID: campaignId }); }) ); }
注意事项
如果你的Campaign类型未定义campaignID字段,需要先补充类型定义:
interface Campaign { // 原有字段 campaignID?: string; }
内容的提问来源于stack exchange,提问作者Wahéb
相关产品推荐
相关产品推荐

