Nestjs在完成从服务到控制器的执行之前发送数据
我有一个控制器和服务。从服务中,我向控制器发送登录成功数据。但它在服务中完成执行之前发送数据。但我正在尝试在loginservice中完成执行后发送数据 我需要在完成登录功能后返回用户数据 用户服务Nestjs在完成从服务到控制器的执行之前发送数据,nestjs,Nestjs,我有一个控制器和服务。从服务中,我向控制器发送登录成功数据。但它在服务中完成执行之前发送数据。但我正在尝试在loginservice中完成执行后发送数据 我需要在完成登录功能后返回用户数据 用户服务 import { Injectable, NotFoundException, UnauthorizedException } from '@nestjs/common'; import { InjectModel } from '@nestjs/mongoose'; import * as jwt
import { Injectable, NotFoundException, UnauthorizedException } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import * as jwt from 'jsonwebtoken';
import { Model } from 'mongoose';
import { User } from './user.model';
import * as bcrypt from 'bcrypt'
@Injectable()
export class UserService {
constructor(
@InjectModel('User') private readonly userModel: Model<User>,
) { }
async Login(email: string, password: string) {
const user = await this.userModel.findOne({ email });
if (!user) {
console.log("User does exist on the database.");
throw new UnauthorizedException();
}
await bcrypt.compare(password, user.password, function (err, result) {
if (!result) {
throw new UnauthorizedException();
}
const authJwtToken = jwt.sign({ name: user.name, email: user.email, role: user.role }, "testSecreate");
const response = { name: user.name, email: user.email, role: user.role, token: authJwtToken }
console.log(response)
return response;
});
}
}
由于您向
bcrypt.compare提供回调函数(最后一个参数),因此它不会返回承诺。请阅读以下文件:
import {
Controller,
Post,
Body,
Get,
Param,
Patch,
Delete,
} from '@nestjs/common';
import { UserService } from './user.service';
@Controller('users')
export class UserController {
constructor(private readonly userService: UserService) {}
@Post('/login')
async login(
@Body('email') userEmail,
@Body('password') userPassword
) {
const token = await this.userService.Login(userEmail, userPassword)
console.log(token, 'token')
return token;
}
}