我想存储包含姓名,电子邮件和密码的注册数据。 我会将这些数据存储在像这样的mongodb中
db.save({"name":"xxxx","email":"xxxxx","password":'xxxxxxxx'},function(err,result){});
当用户登录时,他们肯定会给他们的电子邮件ID或用户名密码,所以我会发现这个用户是否存在于db或者不是这样的
db.find({'email:'xxxxxxx','password':'xxxxxxxxx'},function(err,result){});
我试图在redis中做同样的事情,就像这样
db.hmset('key' name xxxxx email xxxx pass xxxxxx,function(){});
它存储但我怎么能检查电子邮件ID usename已经存在因为用户只会给出电子邮件和密码。如果我知道密钥那么只有我能找到那个数据。即使我知道密钥我只能获得数据我不能发现数据已经存在,不像mongodb
我该如何解决这个问题?
答案 0 :(得分:0)
您可以将用户存储在Set和Hash中以获取详细信息。
然后,您可以使用以下内容检查用户是否存在:http://redis.io/commands/sismember
答案 1 :(得分:-1)
我认为你应该把事情分解成块,而不是试图用一个查询来做所有事情。因此,例如,要添加新用户,请首先检查用户是否存在:
(我的示例假设已定义Mongoose用户模型)
User.findOne({$or : [{'email': req.body.email}, {'username': req.body.username}],
function(err, result) {
if (err) {next(err);}
if (result) {
// you found an existing user
res.send(309, {'message':'Error: User exists'});
} else {
// no user found
var user = new User({
'email': req.body.email,
'username': req.body.username,
'password': req.body.password,
'and-so-on': req.body.moredata
});
user.save(function(err){
if (err) {next(err);}
res.send(200, {'message':'User Registered Successfully'});
});
}
老实说,我不建议从头开始编写用户身份验证系统,因为它在当今的auth方法世界中非常有限。我个人使用Passport,因为它使您能够在您的应用程序中使用多个身份验证系统,包括Facebook,Twitter等等。