首页 > 解决方案 > 从云函数内的请求正文访问各个字段

问题描述

我正在向包含以下正文的云函数发送发布请求:

{message: "this is the message"}

如果我尝试打印请求的整个正文,它会显示它,但如果我尝试获取该message字段,我会undefined进入控制台。

这是我的功能:

exports.myCloudFunction = functions.https.onRequest((req: any, res: any) => {
    console.log(req.body)\\prints the body of the request fine
    console.log(req.body.message)\\prints "undefined"
    cors(req, res, () => {
        const pl = req.body.message;
        console.log(pl);\\prints "undefined"
    });
    return res.send("all done")
});

标签: node.jsfirebasegoogle-cloud-functions

解决方案


我个人以前没有使用过firebase,但是从您的代码和req.body打印正文的事实来看,您可能需要将请求正文解析为json才能访问该message属性:

const body = JSON.parse(req.body);
console.log(body.message);

您也可能需要为json内容设置 bodyparser。在普通的 express-app 中,您可以使用以下方法执行此操作(请注意,您不再需要使用 bodyparser 从上面手动解析):

const bodyParser = require('body-parser');
app.use(bodyParser.json();

编辑:请参阅 Doug 的回答以了解正确的方法,即修复您的请求并将内容类型设置为application/json,以便 Cloud Functions 自动解析和填充req.body请求正文。


推荐阅读