【问题标题】:How are these three JavaScript function arguments use?这三个 JavaScript 函数参数是如何使用的?
【发布时间】:2016-11-12 08:03:12
【问题描述】:

我查找了 JavaScript 函数和参数,但找不到任何东西可以帮助我理解如下所示的函数。可以参考original tutorial

createPuppy 有三个参数:req、res 和 next。

function createPuppy(req, res, next) {
  req.body.age = parseInt(req.body.age);
  db.none('insert into pups(name, breed, age, sex)' +
      'values(${name}, ${breed}, ${age}, ${sex})',
    req.body)
    .then(function () {
      res.status(200)
        .json({
          status: 'success',
          message: 'Inserted one puppy'
        });
    })
    .catch(function (err) {
      return next(err);
    });
}

路由器正在调用该函数:

var express = require('express');
var router = express.Router();

var db = require('../queries');

router.get('/api/puppies', db.getAllPuppies);
router.get('/api/puppies/:id', db.getSinglePuppy);
router.post('/api/puppies', db.createPuppy);
router.put('/api/puppies/:id', db.updatePuppy);
router.delete('/api/puppies/:id', db.removePuppy);
module.exports = router;

当调用 db.createPuppy 时,没有传递任何参数。

这三个参数如何适应这个函数?

更新:我是 Node、JavaScript、pg-promise 和 express 的新手。所以缩小挖掘范围有点不知所措。我来这里是为了了解我的关注点。谢谢!

【问题讨论】:

  • 在这里阅读 Express:expressjs.com/en/guide/routing.html
  • 当一个函数被调用时,可以传递任意数量的参数给它。您在上面所做的是将函数作为参数传递 到另一个函数,该函数稍后将使用多个参数调用它。
  • 感谢您的反馈。您的评论使我首先寻求了解JavaScript callback functions;我显然不明白。我确实遇到了您指出的快速路由页面。在不了解回调的情况下,该快速来源无助于增加清晰度。现在有点清楚了。

标签: javascript node.js postgresql express pg-promise


【解决方案1】:

我相信(req, res, next) 是 Express 中的默认参数。

当您编写router.post('/api/puppies', db.createPuppy); 时,实际上还没有调用函数createPuppy。这只是确定在命中该方法/端点时要调用的函数。

当您使用 POST 访问 /api/puppies 端点时,Express 会调用该函数并将所需的参数传递给它。

希望有帮助!

【讨论】:

  • 你对 req、res 和 next 是 express 中的默认参数是正确的。 Eric Kambestad 提供了 express API 的链接。感谢您帮助我将学习范围缩小到正确的领域。
【解决方案2】:

您将通过 POST 请求将该数据发送到该端点。然后您可以访问通过req.body 变量传入的数据。

您还需要 bodyParser 中间件来访问请求正文。更多关于这里..http://expressjs.com/en/api.html#req.body

【讨论】:

  • 您指向 express API 的指针非常有助于显示那些(req、res 和 next)函数/对象在其中的详细信息。我正在审查整个页面。一旦我明白了这一点,我也会研究 bodyParser 。谢谢。
猜你喜欢
  • 2020-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-07
  • 2013-11-04
  • 2019-10-22
  • 1970-01-01
相关资源
最近更新 更多