Typescript 处理从Firebase主机转发到云功能的HTTP请求

Typescript 处理从Firebase主机转发到云功能的HTTP请求,typescript,firebase,express,google-cloud-functions,firebase-hosting,Typescript,Firebase,Express,Google Cloud Functions,Firebase Hosting,我目前正在尝试使用http将数据修补到我的Firestore数据库。我试图在不使用外部服务器的情况下完成这项工作,因此使用Firebase托管和函数 首先,我初始化了Firebase项目,并将express、主体解析器和Firebase函数助手导入到函数中 然后我将其添加到我的firebase.json中,因此源代码链接到确切的函数 "rewrites": [ { "source": "/api/v1/**", "function": "webApi

我目前正在尝试使用http将数据修补到我的Firestore数据库。我试图在不使用外部服务器的情况下完成这项工作,因此使用Firebase托管和函数

首先,我初始化了Firebase项目,并将express、主体解析器和Firebase函数助手导入到函数中

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

 "rewrites": [
      {
        "source": "/api/v1/**",
        "function": "webApi"
      }
    ]
其次,我编写了这个类型脚本,它应该将数据从HTTP补丁上传到Firestore数据库。这存储在functions/src/index.ts中

import*作为“firebase函数”中的函数;
从“firebase admin”导入*作为管理员;
从“firebase函数助手/dist”导入*作为firebase助手;
从“快递”以快递方式导入*;
从“主体解析器”导入*作为主体解析器;
admin.initializeApp(functions.config().firebase);
const db=admin.firestore();
常量app=express();
常量main=express();
use(bodyParser.json());
use(bodyParser.urlencoded({extended:false}));
main.use('/api/v1/',app);
const sensorscolection=‘sensors’;
export const webApi=functions.https.onRequest(main);
应用程序补丁('/sensor/:sensorId',异步(请求、恢复)=>{
试一试{
等待firebaseHelper.firestore.updateDocument(db、sensorsCollection、req.params.sensorId、req.body);
res.status(200).send('updatesuccess');
}捕获(错误){
res.status(204).send('Patch Error');
}
})
但当我使用邮递员将数据修补到 它给出一个404错误,其中包含:“无法修补/api/v1/XXX”


我仔细检查了是否有准确的文档Id,并检查了是否有正确的JSON数据。有人认识awnser并请帮助我吗?

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

app.patch('/sensor/:sensorId', async(req, res) => {
但您的URL路径中甚至没有“传感器”:

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

/api/v1/sensor/OaSmA27EGQV3urL6fO9g

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

app.patch('/sensor/:sensorId', async(req, res) => {
但您的URL路径中甚至没有“传感器”:

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

/api/v1/sensor/OaSmA27EGQV3urL6fO9g

请编辑该问题以准确显示您是如何调用此函数的。@DougStevenson我更改了它,对不起,我的错误。我仍然看不到您是如何调用此函数的。你在做什么,应该使这个功能运行?为不便,我希望它是更好地了解抱歉。我已经很长时间没有使用stackoverflow了。你的问题应该解释你是如何使用postman发出请求的。您正在使用的URL是什么?如果我们想自己复制此问题,我们会怎么做?请编辑问题以准确显示您是如何调用此函数的。@DougStevenson我更改了它,对不起,我的错。我仍然看不到您是如何调用此函数的。你在做什么,应该使这个功能运行?为不便,我希望它是更好地了解抱歉。我已经很长时间没有使用stackoverflow了。你的问题应该解释你是如何使用postman发出请求的。您正在使用的URL是什么?如果我们想自己复制这个问题,我们会怎么做?它可以工作,谢谢!你知道我怎样把数据放入这样的数组吗?如果您还有其他问题,请单独发布。谢谢!你知道我怎样把数据放入这样的数组吗?如果您还有其他问题,请分别发布。