作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我有一个带有用户凭据的 POST 请求作为登录页面的对象,并像这样传递到 API 服务器:
loginUser(creds) {
//creds is in the form of { username: bob, password: 123 }
var request = {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(creds),
}
fetch(`http://localhost:3000/api/login`, request)
.then(res => res.json())
.then(user => {
console.log(user);
console.log('Successful')
})
.catch(err => {
console.log('Error is', err)
})
},
API Server 像这样接收它:
//With .findOne()
app.post('/api/login/', function(req, res) {
console.log('Req body in login ', req.body)
db.collection('users').findOne(req.body, function(err, isMatch) {
console.log('ISMATCH IS: ' + isMatch)
if(err) {
console.log('THIS IS ERROR RESPONSE')
res.json(err)
} else {
console.log('THIS IS ISMATCH RESPONSE')
res.json(isMatch)
}
})
})
或
//With .find()
app.post('/api/login/', function(req, res) {
console.log('Req body in login ', req.body)
//console logs correctly as { username: bob, password: 123 }
db.collection('users').find(req.body).next(function(err, isMatch) {
console.log('ISMATCH IS: ' + isMatch)
if(err) {
console.log('THIS IS ERROR RESPONSE')
res.json(err)
} else {
console.log('THIS IS ISMATCH RESPONSE')
res.json(isMatch)
}
})
})
因此,使用传入的登录凭据,在 API 服务器中,我想搜索我的 'users'
数据库,看看是否有任何与传入的凭据匹配。但在这两种情况下,isMatch
始终为 null
并始终记录 console.log('THIS IS ISMATCH RESPONSE')
,即使用户凭据与数据库中的任何凭据都不匹配.在客户端,我从来没有收到任何错误响应并且总是记录 console.log('Successful')
。
似乎无法弄清楚我错过了什么。我可能做错了什么?
谢谢
最佳答案
我建议你先找到用户,然后比较密码,比如:
db.collection('users').findOne({ username: req.body.username}, function(err, user) {
console.log('User found ');
// In case the user not found
if(err) {
console.log('THIS IS ERROR RESPONSE')
res.json(err)
}
if (user && user.password === req.body.password){
console.log('User and password is correct')
res.json(user);
} else {
console.log("Credentials wrong");
res.json({data: "Login invalid"});
}
});
关于javascript - MongoDB + Express : How to verify login credentials using db. collection().findOne() 还是 .find()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39759287/
我是一名优秀的程序员,十分优秀!