【问题标题】:Handling HTTP requests forwarded from Firebase Hosting to Cloud Functions处理从 Firebase 托管转发到 Cloud Functions 的 HTTP 请求
【发布时间】:2020-07-05 06:21:39
【问题描述】:

我目前正在尝试使用 http 将数据修补到我的 Firestore 数据库。我试图在不使用外部服务器的情况下执行此操作,因此使用 Firebase 托管和功能。

首先我初始化了我的 Firebase 项目,并将 express、body-parser 和 firebase-functions-helper 导入到函数中。

然后我将它添加到我的 firebase.json 中,因此源链接到确切的函数

 "rewrites": [
      {
        "source": "/api/v1/**",
        "function": "webApi"
      }
    ]

其次,我编写了这个打字稿,它应该将数据从 HTTP 补丁上传到 Firestore 数据库。这存储在functions/src/index.ts

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
import * as firebaseHelper from 'firebase-functions-helper/dist';
import * as express from 'express';
import * as bodyParser from 'body-parser';

admin.initializeApp(functions.config().firebase);
const db = admin.firestore();

const app = express();
const main = express();

main.use(bodyParser.json());
main.use(bodyParser.urlencoded({extended: false}));
main.use('/api/v1/', app);

const sensorsCollection = 'sensors';
export const webApi = functions.https.onRequest(main);

app.patch('/sensor/:sensorId', async(req, res) => {
    try{
        await firebaseHelper.firestore.updateDocument(db, sensorsCollection, req.params.sensorId, req.body);
        res.status(200).send('Update Success');
    }catch(error){
        res.status(204).send('Patch Error');
    }
})

但是当我使用邮递员将数据修补到https://my-project.com/api/v1/document-id 它给出了一个 404 错误,其中包含:“Cannot PATCH /api/v1/XXX”

我仔细检查了我是否有确切的文档 ID,并检查我是否有正确的 JSON 数据。有人知道遮阳篷,请帮助我吗?

【问题讨论】:

  • 请编辑问题以准确显示您是如何调用此函数的。
  • @DougStevenson 我改了,对不起。
  • 我仍然看不到你是如何调用这个函数的。你在做什么才能让这个函数运行?
  • 很抱歉给您带来的不便,我希望它更好地知道。好久没用stackoverflow了。
  • 你的问题应该解释你是如何使用邮递员来提出请求的。您使用的网址是什么?如果我们想自己复制这个问题,我们会怎么做?

标签: typescript firebase express google-cloud-functions firebase-hosting


【解决方案1】:

您的网址与您的路线不匹配。您的路线设置为在匹配 /sensor/* 的路径上触发:

app.patch('/sensor/:sensorId', async(req, res) => {

但您的网址甚至在其路径中的任何地方都没有“传感器”:

/api/v1/OaSmA27EGQV3urL6fO9g

您应该调整您的路径以匹配您的路线处理的内容。也许你的意思更像这样:

/api/v1/sensor/OaSmA27EGQV3urL6fO9g

【讨论】:

  • 它有效,谢谢!您是否知道我如何将数据放入这样结构的数组中? prnt.sc/rm605r
  • 如果您还有其他问题,请单独发布。
猜你喜欢
  • 2020-04-28
  • 2019-06-09
  • 2017-09-14
  • 2017-09-15
  • 2019-05-16
  • 1970-01-01
  • 1970-01-01
  • 2020-01-29
  • 1970-01-01
相关资源
最近更新 更多