当前位置: 首页 > 知识库问答 >
问题:

Firebase函数-无法读取请求体

董元徽
2023-03-14

我的Firebase函数https请求有问题。

  const express = require('express');
  const bodyParser = require('body-parser');
  const app = express();
  app.use(bodyParser.json());
  app.use(function(req, res, next) {
    res.setHeader('Content-Type', 'application/json');
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    res.header("Access-Control-Allow-Methods", "GET, POST");
    next();
  });
  app.use((err, req, res, next) => {
    if (err instanceof SyntaxError) {
      return res.status(400).send();
    };

    next();
  });
  app.post('/fetchPosts', (req, res) => {
    exports.fetchPosts(req, res);
  });

  exports.widgets = functions.https.onRequest(app);

  const cors = require('cors')({ origin: true })
  exports.fetchPosts = (req, res) => {
      console.log(req.body)
      console.log(res)
    let topics = req.body.topics || ['live'];
    let start = req.body.start || 0;
    let num = req.body.num || 10;
    let next = start+num;
    // setting up the response.
  });
   var headers = new Headers();
    headers.append('Content-Type', 'application/x-www-form-urlencoded');
    headers.append('Content-Type', 'application/json; charset=UTF-8');
    const request = new RequestOptions({ headers: headers });
    const url = 'https://my-link.cloudfunctions.net/widgets/fetchPosts';
    let payload = {
        topics: ["live", "pets"]
    }
    console.log(JSON.stringify(payload))
    this.http.post(url, JSON.stringify(payload), request)
    .pipe(map((res:Response) => {
      console.log(res.json())
    }))
    .subscribe(
      data => console.log(data),
      err => console.log(err),
      () => console.log('Got feed')
    );

此外,当我在后端console.log(req.body)时,它只显示{}..一个空的物体。

有什么想法为什么req.body似乎不起作用吗?我也使用startnum来实现,但它们都返回到故障安全。

共有1个答案

牧熙云
2023-03-14

必须使用post方法处理req.body。在您的示例中,可以使用req.query处理变量

处理req.body。您可以使用Postman,然后选择post方法并将数据post为JSON。你可以阅读更多的使用邮递员。

 类似资料:
  • 问题内容: 我正在尝试使用移动应用程序做一个简单的hello world firebase函数,我想记录用户ID,以便可以看到该函数确实起作用。这是我当前的JavaScript代码: 当新数据写入特定的数据库表时,它会触发,但是会出现此错误: 通知数据库如下所示: 问题答案: 您需要安装最新的firebase-functions和firebase-admin: 为了能够使用新的API,请在此处查看

  • 我是Firebase函数的新手,在官方文档中看到了一些变化,但是当我在做一个通知系统时,当我试图获取我的令牌id时,它抛出了这个错误。 我的代码 错误 无法在导出处读取未定义的属性“val”.js user_code。(/user_code/node_modules/火库函数/库/云函数.js:112:27) 在下一个 (本机) 在 /user_code/node_modules/火基函数/库/云

  • 在这里,我使用HttpClient发布JSON数据。但是我无法读取其他应用程序上的数据。当我执行时,它会返回null。我的两个应用程序都部署在同一台服务器上。请告诉我我做错了什么。谢谢

  • 我试图构建一个仅当源URL位于allowlist上时才执行逻辑的应用程序。我正在尝试使用以下方法获取Firebase函数内部的源URL: 我试图从这个堆栈溢出帖子中使用这些: 所有返回未定义。 我试图从堆栈溢出帖子中整合此函数: 这返回我的云函数的基本url 我真正想看到的是发布文章的url。我用这个来写这篇文章,所以我希望看到:

  • 当我想从实时数据库更新CloudFireStore时,我部署了下面的代码,结果出错。 TypeError:无法读取导出时未定义的属性“ref”。改变现状。功能。数据库参考onUpdate。事件(/user\u code/index.js:18:20)在cloudfunctionnewsignation(/user\u code/node\u modules/firebase functions/l

  • 当我尝试使用Firebase部署--Only函数命令部署到一个新的Firebase项目时,我收到了这个错误。我有两个正在使用的项目,一个开发人员和一个prod,我正在处理prod和部署现在也工作得很好,但是当我添加这个项目开发时,部署在prod中保持工作良好,但在这个新项目开发中没有。相反,我得到了这个错误: 错误:解析函数触发器时发生错误。 TypeError:无法读取Object上未定义的属性