如何使用node.js将注册数据存储到redis中

时间:2013-05-17 12:51:57

标签: javascript node.js mongodb redis

我想存储包含姓名,电子邮件和密码的注册数据。 我会将这些数据存储在像这样的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

我该如何解决这个问题?

2 个答案:

答案 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等等。