创建新用户后,我想将数据添加到Firestore中的新集合中。

我已经设置了自己的功能;

exports.createUser = functions.firestore.document('Users/{userId}')
    .onCreate((snap, context) => {
        const newValue = snap.data();
        if (snap.data() === null) return null;
        const userRef = context.params.userId
        console.log("create user found " + (userRef))
        let notificationCollectionRef = firestoreDB.collection('Users').document(userRef).collection('Notifications')
        let notificationDocumentRef = notificationCollectionRef.document('first notification')
        return notificationDocumentRef.set({
            notifications: "here is the notificiation"
        }, {merge: true});
});


运行该函数时,我得到了控制台日志,正确打印了userId,但是出现以下错误;

TypeError:firestoreDB.collection(...)。document不是函数
    在exports.createUser.functions.firestore.document.onCreate(/user_code/index.js:23:73)
    在对象。 (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:112:27)
    在下(本机)
    在/user_code/node_modules/firebase-functions/lib/cloud-functions.js:28:71
    在__awaiter(/user_code/node_modules/firebase-functions/lib/cloud-functions.js:24:12)
    在cloudFunction(/user_code/node_modules/firebase-functions/lib/cloud-functions.js:82:36)
    在/var/tmp/worker/worker.js:728:24
    在process._tickDomainCallback(内部/进程/next_tick.js:135:7)

我是JS&Functions的新手。一如既往的任何帮助,我们将不胜感激。

最佳答案

firestoreDB.collection('Users')返回CollectionReference对象。您正在尝试在名为document()的方法上调用方法,但是从API文档中可以看到,没有这样的方法。我想您打算使用doc()代替构建DocumentReference

    let notificationCollectionRef = firestoreDB.collection('Users').doc(userRef).collection('Notifications')
    let notificationDocumentRef = notificationCollectionRef.doc('first notification')

关于node.js - 在JS中使用Cloud Functions将数据设置为Firestore,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51346959/

10-16 21:01