Angularjs 如何使用用户名为用户查询mongoose
我的nodejs API应用程序中有此路由:Angularjs 如何使用用户名为用户查询mongoose,angularjs,node.js,mongoose,Angularjs,Node.js,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)
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,但都不起作用。如何根据参数搜索mongoose中的对象?在mongoose调用完成之前返回json,因此用户变量为空。试试这个:
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()中
您正在使用passport吗?无需使用数据库将其保存在您的本地存储中…请尝试以下操作:User.findOne({'username':req.body.username},
我很确定您的if语句有问题。您能删除if(foundUser)吗我很确定这就是问题所在您的res.json
需要进入查询回调。否则您将在查询结果可用之前发送响应。
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); } });
});