javascript - 云函数 onCreate 触发函数失败 HTTP 错误:400,请求有错误
问题描述
当我尝试为 Firestore OnCreate 添加触发器时,部署失败并出现 HTTP 错误:400,请求有错误。
如果记录是在不同的集合中创建的,基本上我想写一个新文档。但获取用户ID。这涉及 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 });
});
感谢支持或指针
解决方案:问题是我使用了 Collection 路径而不是文档路径。将.document(users/{userId}/community')更改为.document('users/{userId}/community/{communityId}')修复了错误
另外:还要注意在我的代码中,我在 typescript 中使用了 Javascript 导出方式。不是问题,而是正确的使用方式export const joinCommunity
解决方案
要定义 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 的不同方式(JavaScript 和 TypeScript 之间) SDK 和 Admin SDK 模块,用于导出 Cloud Functions。
推荐阅读
- sql-server-2019 - 是否可以更改 SQL Server 2019 中查询的兼容性级别
- sql-server - 循环和插入/更新的最佳解决方案
- python - 如何使用请求的特定响应/输出在 python 中循环和填充嵌套的 dict/json
- php - 删除一个已经存在的文件夹php
- c++ - 代码不输出泰文符号,但中文有效
- powerbi - Dax - Power Bi 中桑基图的分组数据
- c# - 如何比较数据库表名和文本框?
- php - 获取表格行的总数?
- javascript - Vuejs Option. Get an ID from a selected item
- android - 应用未运行时如何发送 fcm 通知