Knowledge Seeker
Knowledge Seeker

Reputation: 566

How to store ID of record in Firebase cloud functions

I'm saving data in the collection in the following way:

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;
        });
}

Is there any way that I store "documentID" of users table in the place of UserId. How can we do that in firebase cloud functions? I'm unable to find a way to store the documentID in the documentation.

I tried following, but it is giving wrong ID not docuemntID:

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

Upvotes: 1

Views: 107

Answers (1)

Renaud Tarnec
Renaud Tarnec

Reputation: 83103

Since I don't see any saveChurchData() method in your code, I make the assumption that instead of doing

const churchResult = await saveChurchData(userEntry)

you wan to do

const churchResult = await saveData(userEntry)

The following would do the trick, by using the doc() method without specifying any 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) {
        //...
    }

}

Upvotes: 1

Related Questions