0

我正在使用 nodejs 开发一个快速应用程序。基本上,我的问题是登录功能与 Postman 配合得很好,但是一旦我们将它连接到前端并尝试通过浏览器运行它,大部分代码都会失败。

这是我的 server.js 文件中有问题的行

app.post('/login', login)

我也试过

app.get('/login', login)

当我们用 Postman 运行时,用户被放入了 redis db,生成了访问令牌,一切都很好但是当我们通过浏览器运行时,虽然调用了登录并生成了访问令牌,但用户并没有放入redis db并且没有生成控制台日志,所以我什至不确定出了什么问题。

这是我的登录功能。

const login = (req, res, next) => {
  console.log(req)
    const {email, password} = req.body;
    console.log('req', req)
    console.log('email: ', email)
    console.log('password: ', password)
    mongoose.connect(uri, {useNewUrlParser: true, useUnifiedTopology: true})
    .then(() => {
      const db = mongoose.connection;
      const UserModel = db.model('User', userSchema, 'users')
      const query = UserModel.find({"email": {"$eq": email}, "password": {"$eq": password}})
      query.collection(UserModel.collection);
      query.exec((err, user) => {
        console.log('user ', user)
        if (user != []) {
          user[0].hidden = false;
          user[0].save();
          const accessToken = generateAccessToken({email: email});
          user = user[0]
          res.json({
            id: user.id,
            email: user.email,
            name: user.firstName + user.lastName,
            token: accessToken,
          });
          redisClient.get(user.id, (error, data) => {
            if (error) {
              res.send({error});
            }
            if (data !== null) {
              const parsedData = JSON.parse(data);
              parsedData[user.id].push(accessToken);
              redisClient.setex(user.id, 36000, JSON.stringify(parsedData));
              console.log("user already in redis db ")
              db.close()
              next();
            }
            const whiteList = {
              [user.id]: [accessToken],
            };
            redisClient.setex(user.id, 36000, JSON.stringify(whiteList));
          });
        } else {
          res.send('Incorrect email or password');
        }
      })
        //.then( () => {})
    })
    .catch(err => {
      console.error('Database connection error: ', err)
    })
}

任何建议将不胜感激。

4

0 回答 0