node.js - 在 JS 中使用 Cloud Functions 将数据设置到 Firestore
问题描述
创建新用户后,我想将数据添加到 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,但出现以下错误;
类型错误: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 at process._tickDomainCallback (internal/process/next_tick.js:135:7)
我是 JS 和函数的新手。一如既往,非常感谢任何帮助。
解决方案
firestoreDB.collection('Users')
返回一个CollectionReference
对象。您正在尝试调用被调用的方法document()
,但正如您从 API 文档中看到的那样,没有这样的方法。我想你打算用它doc()
来构建一个DocumentReference
.
let notificationCollectionRef = firestoreDB.collection('Users').doc(userRef).collection('Notifications')
let notificationDocumentRef = notificationCollectionRef.doc('first notification')
推荐阅读
- android - java.lang.IllegalStateException:不允许启动服务Intent(来自Activity onCreate)
- javascript - 无法在 javascript / reactjs 中获取对象的方法
- php - 识别从 WordPress / PHP 中动态创建的表单中选择的项目
- alibaba-cloud - 为 ECS 实例阿里巴巴下载现有的密钥对 (pem) 文件
- android - Firebase 比较方法
- image - 如何从 cypress CX3 传输的包中解析 Raw16 数据以进行 YUV 格式化
- python - 在 luigi 中使用 multiprocessing.Queue
- javascript - 无法理解 JavaScript 100%3 并且答案在控制台中显示为 1
- php - 根据送货表费率选择在 woocommerce 结帐时隐藏送货地址
- c# - 无头模式下的 Firefox 以小尺寸运行(1366、768)