【发布时间】:2019-12-17 04:21:00
【问题描述】:
我想知道是否有任何方法可以在不使用 req.params.users 的情况下获取整个对象,但我可以从 react-native 获取所有内容,因为 URL 会很长,例如 https://example.com/createUser/myname/myrole/myic/myaddress/mybirthday。我想将其缩短为https://example.com/createUser。我尝试了req.body,但无法获得任何数据比较req.params.name。
index.js
const functions = require('firebase-functions');
const admin = require("firebase-admin");
admin.initializeApp(functions.config().firebase);
const db = admin.firestore();
const express = require('express');
const cors = require('cors');
const user = express();
user.use(cors());
user.post('/createUser/:name/:role/:ic/:address/:birthday', usersEndpoint.createUser);
users.js
const admin = require("firebase-admin");
const db = admin.firestore();
exports.setUserRole = function (req, res) {
const name = req.params.name;
const role = req.params.role;
const ic = req.params.ic;
const address = req.params.address;
const birthday = req.params.birthday;
//......others code
};
【问题讨论】:
-
请详细说明您需要什么??
name是否未定义?或者您正在尝试将所有req.params发送到req.body?? -
我的意思是我想缩短 URL,因为参数太多导致 URL 字符串太长。我想知道是否有任何其他方法可以缩短 URL 字符串。
-
我不明白您为什么首先将所有这些参数放在 POST 的 url 中?这是错误地使用 POST 的 URL。这些应该在正文中,而不是在 URL 中。这需要首先在客户端(您没有向我们展示代码)通过将数据视为 formData 来修复,而不是作为 URL 中的内容,然后在服务器上进行相应的更改,使用正确的配置和路由声明和中间件,它们的属性都将在 req.body 中命名为属性,并且 URL 应该只是
https://example.com/createUser。 -
TLDR - 将来自客户端的数据作为 formData 发布,它将在它所属的正文中,并且 URL 可以是
https://example.com/createUser,因为它应该是正确的bodyParser中间件,您可以访问req.body中的属性。帖子数据属于正文,而不是 URL。修复您的客户端以正确发送它,然后修复服务器以匹配。
标签: node.js firebase express google-cloud-functions