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

NodeJS:如何在函数中使用req、res、result等参数?

封景曜
2023-03-14

我是相当新的JS,尤其是节点和快递。我正在学习一些关于如何构建API的教程,同时学习JS的特殊功能,如let/const/var、箭头函数等。

在许多教程中,我看到了如下内容:

somecode.then((result) => {someothercode})

例如,“somecode”是一个get请求

“result”是返回值的名称还是jsdeveloper使用的约定?我的意思是,这个例子有效吗?

somecode.then((foo) => {someothercode})

同样对于req、res变量,这意味着什么?

app.get("/users/:userId", [
        usersController.getById
    ]);

下面是getById函数(再次使用“结果”):

exports.getById = (req, res) => {
    userModel.findById(req.params.userId).then((result) => {
        res.status(200).send(result);
    });
};

控制器needs(req,res)中定义的getById方法是否意味着,当我像上面的代码一样调用它时,req和res参数被隐式使用?

它还需要一个参数:

req.params.userId 

哪个在路由的url中,它如何传递到另一个文件?我有一条路线。使用控制器的js文件。使用模型的js文件。js。参数如何从路由到控制器?

如果我把参数的名字改了就不行了,对吗?例如:

req.params.id

很抱歉发了这么长的帖子,我正在努力理解JS逻辑,以养成一些好习惯并编写干净的代码。

谢谢!

共有3个答案

刘焱
2023-03-14

看起来您正在努力理解回调函数。请考虑下面的代码,然后打开您正在使用的包的源代码。看起来您正在使用express。js

function something(callback) {
  var x = 5;
  var y = 'anything';
  callback(x, y);
}

something(function(req, res) {
  console.log(req);
  console.log(res);
});

将创建something函数,并在该函数范围内使用任何类型创建变量x和y。然后,当我们调用或使用某个函数时,我们将函数作为变量传递,该变量作为变量回调传递,然后可以使用它,因为它是一个函数,所以我们使用x和y调用回调,x和y可以是任何值,并且有效,我以reqres的形式传回一个数字和一个字符串。

冯永长
2023-03-14

“结果”是返回值的名称还是JS开发人员使用的约定?

结果是您正在创建的新变量的名称,该变量表示从Promise分辨率传入的值。是的,您的foo示例将起作用。

(请求、回复)=

function getById(req, res) {...}

reqres只是表示将传递给此函数的值。它们可以很容易地被称为(foo,bar)

司寇安宜
2023-03-14

“result”是返回值的名称还是jsdeveloper使用的约定?我的意思是,这个例子有效吗?

根据我的经验,是的-经常使用result。通常你会看到像响应,但最终它可以是你定义的任何东西。我建议您遵守约定,如果您是从了解NodeJS异步操作开始的,还可以查看MDN Promise教程。

同样对于req、res变量,这意味着什么?

app.get("/users/:userId", [
        usersController.getById
    ]);

这是一个中间件链。有关更多信息,请查看Express docs。

控制器needs(req,res)中定义的getById方法是否意味着,当我像上面的代码一样调用它时,req和res参数被隐式使用?它还需要一个参数:

req.params.userId 

哪一个在url中?如果我正确更改参数名称,它将不起作用?例如:

req.params.id

是的,这是使用命名参数。如果没有完整的路由器代码,很难知道getById方法如何链接到定义的路由。快递路由留档可能是一个好的开始。

 类似资料:
  • 问题内容: 在以下Express函数中: 什么是和?它们代表什么,它们是什么意思,它们是做什么的? 谢谢! 问题答案: 是一个对象,其中包含有关引发事件的HTTP请求的信息。作为对的响应,您可以用于发送回所需的HTTP响应。 这些参数可以命名为任何东西。您可以将代码更改为以下内容: 编辑: 说您有这种方法: 该请求将是一个具有以下属性的对象(仅举几例): ,这将是触发此特定操作的时间 ,在这种情况

  • 类型: Function 参数: Request Response 返回: Promise 你可以通过 nuxt.render 函数,把 Nuxt.js 变成你 Node.js 服务端的中间件。 例如,结合 Express.js 使用: const { Nuxt, Builder } = require('nuxt') const app = require('express')() const

  • 是否可以使用等待与参数?例如: 即使是这样,似乎也不是最好的主意。以前有人这样做过吗?

  • 问题内容: 以传统方式添加事件侦听器: 但是我想适应addEventListener的方式: 它不起作用,因为我无法将getSelection()中的任何参数作为addEventListener方法中的第二个参数传递?据我所知,我只能使用没有括号的函数名。 任何的想法? 问题答案: 无需传递任何内容。用于的函数将自动绑定到当前元素。只需在您的函数中使用: 如果要将任意数据传递给函数,请将其包装在您

  • NodeJS V.6.11.1(谷歌云功能) 谢了! Update:我希望只有当promise没有错误地解析(即到达)时才从这个参数函数返回数据,因此只有在用户创建时才应用事务。

  • 函数执行时间过长。尝试使用await异步函数,但没有效果。返回未定义,因为不等待。 我有我的index.js: 和我的signupapi.js: 这是运行index.js并调用时的节点输出: 我当前在DB中有37个具有相同数据的条目,因此返回37。 但这是最后执行的,并且出现在控制台的底部,而它应该出现在顶部。