Node.js 使用JS中的云函数将数据设置到Firestore

Node.js 使用JS中的云函数将数据设置到Firestore,node.js,firebase,google-cloud-firestore,google-cloud-functions,Node.js,Firebase,Google Cloud Firestore,Google Cloud Functions,创建新用户后,我想向Firestore中的新集合添加数据 我已将我的职能设置为这样 exports.createUser = functions.firestore.document('Users/{userId}') .onCreate((snap, context) => { const newValue = snap.data(); if (snap.data() === null) return null; const use

创建新用户后,我想向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});
});
当运行函数时,我得到控制台日志,正确地打印出用户ID,但我得到以下错误

TypeError:firestoreDB.collection(…)。文档不是函数 在exports.createUser.functions.firestore.document.onCreate(/user\u code/index.js:23:73) 反对。(/user_code/node_modules/firebase functions/lib/cloud functions.js:112:27) 在下一个(本地) at/user\u code/node\u modules/firebase functions/lib/cloud functions.js:28:71 at_uuwaiter(/user_code/node_modules/firebase functions/lib/cloud functions.js:24:12) 在cloudFunction(/user\u code/node\u modules/firebase functions/lib/cloud functions.js:82:36) at/var/tmp/worker/worker.js:728:24 在进程中。_tickDomainCallback(internal/process/next_tick.js:135:7)


我对JS和函数不熟悉。一如既往,非常感谢您的帮助。

firestoreDB.collection('Users')
返回一个对象。您试图调用名为
document()
的方法,但是从API文档中可以看到,没有这样的方法。我想你打算用它来建造一个


firestoreDB.collection('Users')
返回一个对象。您试图调用名为
document()
的方法,但是从API文档中可以看到,没有这样的方法。我想你打算用它来建造一个


以下是完整的工作代码:

const functions=require('firebase-functions');
const admin=require('firebase-admin');
admin.initializeApp(functions.config().firestore);
const firestoreDB=admin.firestore()
//创建并部署您的第一个云功能
// https://firebase.google.com/docs/functions/write-firebase-functions
exports.helloWorld=functions.https.onRequest((请求,响应)=>{
send(“来自Firebase云函数的您好!”);
console.log(“功能触发”)
});
exports.createUser=functions.firestore.document('Users/{userId}')
.onCreate((快照,上下文)=>{
const newValue=snap.data();
如果(snap.data()==null)返回null;
const uid=context.params.userId
让notificationCollectionRef=firestoreDB.collection('Users').doc(uid).collection('Notifications'))
返回通知CollectionRef.add({
通知:“你好,通知”,
通知类型:“欢迎”
})。然后(ref=>{
返回console.log('notification successful',ref.id)
})

});以下是完整的工作代码:

const functions=require('firebase-functions');
const admin=require('firebase-admin');
admin.initializeApp(functions.config().firestore);
const firestoreDB=admin.firestore()
//创建并部署您的第一个云功能
// https://firebase.google.com/docs/functions/write-firebase-functions
exports.helloWorld=functions.https.onRequest((请求,响应)=>{
send(“来自Firebase云函数的您好!”);
console.log(“功能触发”)
});
exports.createUser=functions.firestore.document('Users/{userId}')
.onCreate((快照,上下文)=>{
const newValue=snap.data();
如果(snap.data()==null)返回null;
const uid=context.params.userId
让notificationCollectionRef=firestoreDB.collection('Users').doc(uid).collection('Notifications'))
返回通知CollectionRef.add({
通知:“你好,通知”,
通知类型:“欢迎”
})。然后(ref=>{
返回console.log('notification successful',ref.id)
})

});
让notificationCollectionRef=snap.ref.collection('Notifications')
或者
let-firestoreDB=snap.ref.firestore
@JamesPoag获取相同错误。
let-notificationCollectionRef=snap.ref.collection('Notifications')
或者
let firestoreDB=snap.ref.firestore
@JamesPoag得到相同的错误。谢谢,伙计,我已经测试了这段代码,它工作正常。但是,在比较null之前,可以删除“const newValue=snap.data();”。谢谢,伙计,我已经测试了这段代码,它工作得很好。但是您可以在比较null之前删除“const newValue=snap.data();”。。。
    let notificationCollectionRef = firestoreDB.collection('Users').doc(userRef).collection('Notifications')
    let notificationDocumentRef = notificationCollectionRef.doc('first notification')