【问题标题】:How to get every params in an object in Express?如何在 Express 中获取对象中的每个参数?
【发布时间】: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


【解决方案1】:

您已经通过缩短您的网址 https://example.com/createUser 并在 req.body 中传递参数找到了解决方案

但问题正如你所说的 I tried req.body but cannot get any data ,那是因为你必须使用 bodyparser 如下:

user.use(bodyParser.urlencoded({
    extended: false
}))
user.use(bodyParser.json())

然后,如果您在您的路线中访问req.body,您可以获得数据

【讨论】:

  • 所以 cors() 不需要使用直到?只使用正文解析器?
  • @raynne 你也可以使用 cors()
猜你喜欢
  • 2017-11-25
  • 2016-02-03
  • 1970-01-01
  • 1970-01-01
  • 2022-11-27
  • 1970-01-01
  • 1970-01-01
  • 2010-12-10
相关资源
最近更新 更多