Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js'的参数;s回调函数_Javascript_Node.js_Mongoose - Fatal编程技术网

Javascript Node.js'的参数;s回调函数

Javascript Node.js'的参数;s回调函数,javascript,node.js,mongoose,Javascript,Node.js,Mongoose,下面的代码使用node.js和mongoose创建一个GET路由。在findById函数中,我们使用了一个回调函数,它接受err和foundCampground。我将回调函数解释为某种高阶函数,但如何传递包含参数的函数?执行findById时,传递给回调函数的变量是什么?我这样问是因为err和foundCampground在其他任何地方都没有定义,所以我不知道在执行过程中应该传递给回调函数什么 app.get("/campgrounds/:id", function(req, res){

下面的代码使用node.js和mongoose创建一个GET路由。在findById函数中,我们使用了一个回调函数,它接受err和foundCampground。我将回调函数解释为某种高阶函数,但如何传递包含参数的函数?执行findById时,传递给回调函数的变量是什么?我这样问是因为err和foundCampground在其他任何地方都没有定义,所以我不知道在执行过程中应该传递给回调函数什么

app.get("/campgrounds/:id", function(req, res){
    Campground.findById(req.params.id, function(err, foundCampground){
        if(err){
            console.log(err);
        }
        res.render("show", {campground: foundCampground});
    });
 });
campgrand.findById的第二个参数参数,即
err
foundcampgrand
,没有在任何地方定义,因为它是。。。函数定义的参数

以防您不熟悉参数和参数之间的差异

参数是函数声明中的变量。 而参数是传递给该参数的函数的实际值

例如:

req.headers.body
函数(err,foundcampgrand){…}
是一个参数

同时,
err
foundCampground
是一个参数

至于,哪些
参数将被传递到
err
foundCampground
?这将由逻辑
Campground.findById

下面是一个示例,说明如何编写自己的函数来接受回调


const items=[{id:1,名称:'Adam'},{id:2,名称:'Ramadoka'},];
函数findById(searchedd,回调){
//第二个参数是回调函数,我们将调用它
//通过将error(如果找不到)作为第一个参数传递(否则为null)
//并且该项(如果找到该项)作为第二个参数(否则为null)
用于(项目的常数项){
if(item.id==searchedId){
返回回调(空,项);
}
}
返回回调(新错误('notfound'),null);
}
//然后你可以这样称呼它:
findById(2,函数(错误,项){
if(error){console.error(error);}
if(item){console.log(item);}
});

我希望它能有所帮助。

findById
应该使用1个或2个参数调用回调函数,这就是
err
foundCampground
的作用。你为什么对
app.get
的回调没有同样的问题?你为什么问我
.findById
?当
app.get
实际执行相同的操作时?非常感谢您的回答。将项放在函数定义中可能更好?它可以以任何方式定义,哈哈,只是如果我在findById主体中定义项,每次调用它时都会重新初始化。因为它是静态的,所以初始化一次感觉很自然。