0

我想存储包含名称、电子邮件和密码的注册数据。我会像这样将这些数据存储在 mongodb 中

db.save({"name":"xxxx","email":"xxxxx","password":'xxxxxxxx'},function(err,result){});

当用户登录时,他们肯定会提供他们的电子邮件 ID 或用户名和密码,所以我会发现这个用户是否存在于数据库中

 db.find({'email:'xxxxxxx','password':'xxxxxxxxx'},function(err,result){});

我试图在redis中做同样的事情,就像这样

    db.hmset('key' name xxxxx email xxxx pass xxxxxx,function(){});

它已存储,但我如何检查电子邮件 ID 用户名是否已存在,因为用户只会提供电子邮件和密码。如果我知道密钥,那么只有我可以找到该数据。即使我知道密钥,我也只能获取数据,我无法找到数据已经存在,不像 mongodb

我该如何解决这个问题?

4

2 回答 2

0

您可以将用户存储在 Set 和 Hash 中以获取详细信息。

然后,如果用户存在,您可以通过以下方式检查 Set:http ://redis.io/commands/sismember

于 2013-05-17T13:14:49.180 回答
-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'});
      });
   }

不过老实说,我不建议从头开始编写用户身份验证系统,因为它在当今的身份验证方法世界中非常有限。我个人使用Passport,因为它使您能够在您的应用程序中使用多个身份验证系统,包括 Facebook、Twitter 等等。

于 2013-05-17T13:24:59.663 回答