代码之家  ›  专栏  ›  技术社区  ›  Thamaraiselvam

异步-等待Mongoose不工作的节点

  •  0
  • Thamaraiselvam  · 技术社区  · 6 年前

    比较用户登录请求的密码。使用 异步等待 等待得到实际的响应。

    我希望它按以下顺序运行:1、2、3、4(console.log的顺序)

    但它执行为1、3、4、2。请帮忙。

    脚本不等待 比较密码

    async login(request){
            let response =  await User.findOne({ email: request.email }, async (err, user) => {
                if (err) throw err;
    
                console.log('1');
    
                let isMatch =  await user.comparePassword(request.password, (err, isMatch) => {
                    console.log('2');
                    if (err) throw err;
                    request.isMatch = isMatch;
                });
    
                console.log('3');
                return request;
    
            });
    
            console.log('4');
            console.log('response', response);
        }
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Bergi    6 年前

    如果您正在使用 async / await ,您使用的是承诺,不能将回调传递给mongoose方法。如果你不通过,他们会给你一个承诺 等待 . 你在找

    async login(request){
        let response =  await User.findOne({ email: request.email });
        console.log('1');
        let isMatch =  await user.comparePassword(request.password);
        console.log('2');
        request.isMatch = isMatch;
        console.log('3');
        return request;
        console.log('4');
        console.log('response', response);
    }