将两个参数传递给Express Mongoose api以返回单个结果

时间:2016-11-17 19:26:19

标签: angularjs mongodb express mongoose

我是使用Express和Mongoose创建API的新手。

我已经能够设置我的基本端点,获取,发布,放置等。

但是现在我想设置一个我传递两个参数来搜索集合并返回单个结果。

我认为我没有正确传递参数。

在我的角度,我有以下服务电话,我知道这是正确的:

.factory('LoginFactory', function($resource){
  return $resource('/api/user?email=:eml&password=:pwd', {}, {
    query:{ method:'GET', isArray:true, params:{ eml:'@eml', pwd:'@pwd'}}
  });
});

但我不认为我在快递/猫鼬API中正确行事。这是我的终点:

router.route('/:email:password')
.get(function(req, res){
  User.findOne({email:req.param.email, password:req.param.password}, function(err, user){
    if(err)
      res.send(err);
    res.json(user);
  });
});

1 个答案:

答案 0 :(得分:1)

我使用req.param而不是app.get("/:email/:password", function(req, res){ console.log(req.params.email) console.log(req.params.password) })

我在每个参数之前都有一个斜杠

:email:password
  

req.params

     

此属性是一个包含映射到named的属性的对象   路线“参数”。例如,如果您有route / user /:name,   然后“name”属性可用作req.params.name。这个对象   默认为{}。

你只有一个看起来像union的参数。您必须添加斜杠来创建URL段,以便express可以将其识别为路由参数。