云端功能onCreate触发功能失败,HTTP错误:400,请求有错误

时间:2020-06-26 05:31:08

标签: javascript node.js firebase google-cloud-firestore google-cloud-functions

当我尝试为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

1 个答案:

答案 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之间)。