如何用用户名查询用户的mongoose

我在我的nodejs API应用程序中有这个路线:

router.post('/user', function(req, res, next){ if(!req.body.username){ return res.status(400).json({message: 'Geen username'}); } var user = {}; User.find({ 'username': req.body.username}, function(err, foundUser){ if(err) return next(err); if (foundUser) // check the value returned for undefined { user = foundUser; } }); res.json(user); }); 

然而,这只是返回{},我敢肯定用户名在数据库中。

这是我在我的angular应用程序中的路线:

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

我是相当新的Angular和Nodejs,我试过User.find和User.findOne,但都没有工作。 如何根据参数searchmongoose作为对象?

您在mongoose呼叫完成之前返回json,因此用户variables为空。 尝试这个:

 router.post('/user', function(req, res, next){ if(!req.body.username){ return res.status(400).json({message: 'Geen username'}); } var user = {}; User.find({ 'username': req.body.username}, function(err, foundUser){ if(err) return next(err); if (foundUser) // check the value returned for undefined { user = foundUser; } res.json(user); }); }); 

你需要把res.json(); 在你的findOne()

 router.post('/user', function(req, res, next){ if(!req.body.username){ return res.status(400).json({message: 'Geen username'}); } var user = {}; User.findOne({ 'username': req.body.username}, function(err, foundUser){ if(err) return next(err); console.log(foundUser); // if this works everything's fine if (foundUser) // check the value returned for undefined { user = foundUser; res.json(user); } }); });