我在一本关于Node和Express的Web开发的书中看到了这段代码,我看不出这条路由将如何更新任何东西。
Example 6-13. PUT endpoint for updating
// API that updates a tour and returns JSON; params are passed using querystring
app.put('/api/tour/:id', function(req, res){
var p = tours.some(function(p){ return p.id == req.params.id });
if( p ) {
if( req.query.name ) p.name = req.query.name;
if( req.query.price ) p.price = req.query.price;
res.json({success: true});
} else {
res.json({error: 'No such tour exists.'});
}
});
它似乎将更新的信息添加到在第5行创建的布尔值p
上。它不应该把它附加到tours
数组中的某个元素上吗?
是我遗漏了什么,还是这是一些需要报告给出版商的勘误表?
如果tours
是一个数组,那么p
将是由Array.prototype.some
返回的布尔值,因此此代码不会做任何有用的事情。但是,如果tours.some
是一个自定义的方法,它返回第一个匹配的tour实例,那么这个代码片段可能是有意义的,但是我们需要了解tours
是什么才能看到整个画面。