-1

我有一个默认的 Express 应用程序,我的路由 index.js 文件如下所示:

var user = require('../models/user');

exports.index = function(req, res){
  res.render('index', { title: 'Express', object: obj });
};

现在,假设在我的 app.js 文件中,client对象是连接到我的 redis 服务器的 redis 客户端,并且我希望能够在我的用户模型中使用该客户端对象,例如避免重复登录尝试。我怎样才能在我的用户模型中访问该对象?这是该模型的代码

var mongoose = require('mongoose');

var userSchema = mongoose.Schema({
  email:    { type: String, required: true, index: { unique: true } },
  password: { type: String, required: true },
  name:     { type: String, required: true }
});

var User = mongoose.model('User', userSchema);

exports.canLogin = function(mIn, pIn, next){
  User.findOne({
    email: mIn
  }, function(err, user){
    if(!err){
      if(user.password == pIn)
        next(true);
        else next(false);
    } else next(false);
  });
};
4

1 回答 1

1

如果你想将你的客户端存储在会话中,你可以使用connect-redis来设置会话存储,就像这样

var express = require('express');
var app = express();
var RedisStore = require('connect-redis')(express);

app.use(express.cookieParser());
app.use(express.session({
  store: new RedisStore({
    host: 'localhost',
    port: 6379,
    db: 2,
    pass: 'RedisPASS'
  }),
  secret: '1234567890QWERTY'
}));

现在,您可以像这样访问会话req.session.WHATEVER

你可以用 mongo 做同样的事情。

如果在处理请求时只是想要一些redis存储可用,可以直接使用node_redis。github上有很多例子

于 2013-08-29T18:37:22.157 回答