【问题标题】:How to store ID of record in Firebase cloud functions如何在 Firebase 云函数中存储记录 ID
【发布时间】:2020-08-13 04:05:50
【问题描述】:

我通过以下方式将数据保存在集合中:

const userEntry= {
            UserId: "I want documentID here", 
            UserName: "",
            creationDate: ""
        }
const churchResult = await saveChurchData(userEntry)
const saveData = async (data: object) => {
    return database.collection('users').add(data)
        .then(snapshot => {
            return snapshot.get().then(doc => { 
                doc.data() 
                return doc.id
            }).catch(err => {
                console.log('Error getting documents', err);
                return null;
            });
        }).catch(err => {
            console.log('Error getting documents', err);
            return null;
        });
}

有什么方法可以将用户表的“documentID”存储在UserId 的位置。我们如何在 Firebase 云功能中做到这一点?我无法找到将 documentID 存储在文档中的方法。

我尝试了以下操作,但它给出了错误的 ID 而不是文档 ID:

    const key =firebase.database().ref().push()

【问题讨论】:

    标签: javascript typescript firebase google-cloud-firestore


    【解决方案1】:

    由于我在您的代码中没有看到任何 saveChurchData() 方法,因此我假设不是这样做

    const churchResult = await saveChurchData(userEntry)
    

    你想做的事

    const churchResult = await saveData(userEntry)
    

    通过使用doc() 方法而不指定任何documentPath,以下方法可以解决问题:

    const userEntry = {
        UserName: "",
        creationDate: ""
    }
    
    const churchResult = await saveData(userEntry)
    
    const saveData = async (data: object) => {
    
        try {
    
            const docRef = database.collection('users').doc();
            const docId = docRef.id;
    
            await docRef.set({ UserId: docId, ...data });
    
            return docId;
    
        } catch (error) {
            //...
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2021-12-20
      • 2021-04-27
      • 1970-01-01
      • 2020-12-13
      • 2021-02-14
      • 2020-07-26
      • 2020-07-03
      • 2022-09-25
      • 2020-06-06
      相关资源
      最近更新 更多