2016-11-11 20 views
-2

我查了JavaScript函数和参数,但找不到任何东西来帮助我理解下面的函数。您可以参考original tutorial这三个JavaScript函数参数是如何使用的?

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的新手。所以,缩小挖掘的范围有点压倒一切。我来到这里是为了让我的主题聚焦在哪里,谢谢!

+1

阅读快速在这里:http://expressjs.com/en/guide/routing.html – jmargolisvt

+0

当一个函数被*调用*,任何数量的参数可以传递给它。上面你正在做的是将函数作为参数传递给另一个函数,这个函数稍后会用一些参数调用它。 –

+0

感谢您的反馈。您的评论让我首先了解[JavaScript回调函数](http://javascriptissexy.com/understand-javascript-callback-functions-and-use-them/);我显然不明白。我确实跑过了你指出的快速路由页面。如果不理解回调,那个表达式来源无助于增加清晰度。现在有点更清楚了。 –

回答

-1

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

当您编写router.post('/api/puppies', db.createPuppy);时,函数createPuppy实际上尚未调用。这只是建立了当该方法/端点被击中时要调用的函数。

当您用POST键入/api/puppies端点时,Express负责调用该函数并将所需参数传递给它。

希望有帮助!

+1

你说得对,req,res和next是默认参数。 Eric Kambestad提供了表达API的链接。感谢帮助缩小了我的学习范围。 –

-1

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

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

+0

您指向快速API的指针对于显示那些(req,res和next)函数/对象在那里是详细的非常有帮助。我正在审阅整个页面。一旦我解决了这个问题,我也会研究bodyParser。谢谢。 –

相关问题