【问题标题】:How to format route that gives user back based on username如何格式化根据用户名返回用户的路由
【发布时间】:2026-01-11 15:20:05
【问题描述】:

这是我在 Angular 中的 API 调用:

$http({
                method: 'POST',
                url: "http://groep6api.herokuapp.com/user",
                headers: {'Content-Type': 'application/x-www-form-urlencoded'},
                transformRequest: function(obj) {
                    var str = [];
                    for(var p in obj)
                        str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
                    return str.join("&");
                },
                data: {username: "testeken3"}
            }).success(function (result) {
                console.log(result);
            });

这是我在 routes/index.js 中的路线:

router.post('/user', function(req, res, next){
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");

  User.find(function(user){
    if(user.username != req.body.username){next(err);}
    res.json(user);
  });
});

我认为我的 API 调用是正确的,但我的路线需要是什么样的? 这只是没有回应。

【问题讨论】:

    标签: angularjs node.js express mongoose


    【解决方案1】:

    假设您将 mongoose 用于您的 ODM,您没有将任何条件传递给您的 User.find() 函数。此外,传递给find() 的回调是第一个错误回调,因此如果发生,第一个参数将被分配一个Error 对象,否则它将是未定义的,第二个参数将包含find() 的结果。

    下面的代码使用find()根据用户名定位给定的用户,然后根据传递给回调的内容做出相应的响应。此代码还假定username 对该属性具有唯一约束。如果不是,则此代码将返回与find() 条件匹配的所有结果。

    router.post('/user', function(req, res, next){
      res.header("Access-Control-Allow-Origin", "*");
      res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    
      User.find({ username: req.body.username}, function(err, user){
        if(err)
          return next(err);
    
        if (user) // check the value returned for undefined
          res.status(200).json(user);
        else
          res.status(204).send();
      });      
    });
    

    【讨论】:

      最近更新 更多