当我尝试为Firestore OnCreate添加触发器时,由于HTTP错误:400,部署失败,请求有错误。
如果记录是在其他集合中创建的,基本上我想写一个新文档。但获取userId。这涉及2次写入和1次读取。不确定这是否有效
但是日志和错误没有详细说明错误是什么
这是我的代码
'use strict';
import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
const requestPromise = require('request-promise');
admin.initializeApp();
const firestore = admin.firestore();
const cors = require('cors')({
origin: true,
});
exports.joinCommunity = functions.region('europe-west2').firestore.document('users/{userId}/community')
.onCreate((snap, context) => {
const data = snap.data();
const communityRef = firestore.doc(`community/${data['cid']}`);
const user = {
uid: context.params.userId,
joined_on: context.timestamp
}
return communityRef.collection('members').doc(context.params.userId).set(user, { merge: true });
});
欣赏支持或指针
解决方案:问题是我使用了“收集”路径而不是文档路径。将 .document(users / {userId} / community')更改为 .document('users / {userId} / community / {communityId}')可修复错误< / p>
另外:还请注意,在我的代码中,我使用Javascript格式输出了打字稿。不是问题,而是正确的使用方式 export const joinCommunity
答案 0 :(得分:3)
要定义Cloud Firestore触发器,您需要指定文档路径。使用users/{userId}/community
,您可以指定收集路径。
因此,当在users
集合(带有users/{userId}
)或community
子集合(带有users/{userId}/community/{docId}
)中创建文档时触发CF。
还查看了以下GitHub页面https://github.com/firebase/functions-samples/tree/master/typescript-getting-started,尤其是用于导入Cloud Functions SDK和Admin SDK模块以及导出Cloud Functions的不同方式(在JavaScript和TypeScript之间)。