我一直试图在for循环中调用redisclient.del函数,但该函数没有返回任何状态。

studentSchema.methods.generateAuthToken = function () {
    let admin = this;
    let access = 'student';
    let token = jwt.sign({ _id: student._id.toHexString(), access }, HRCSECRET).toString();
    student.tokens.forEach(element => {
        console.log(element.token);
        redisClient.del(element.token, (err, result) => {
            if(err){
                console.log(err);
            }
            else{
                console.log(result);
            }
        })
    });
    student.tokens = [{ access, token }];
    return student.save().then(() => { return token; });
};

在执行期间没有打印console.log语句

最佳答案

你试过签入redis cli吗?你的东西被删除了吗?
下面只是一点重构

studentSchema.methods.generateAuthToken = async () => {
  // your code before
  const promises = []
  student.tokens.forEach(element => {
    promises.push(redisClient.del(element.token))
  })
  await Promise.all(promises)
  // your next code
}

关于javascript - Redis Client del函数未在for循环中调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54002236/

10-13 05:20