这是 users.service.ts 中的 addUser 方法 -
// post a single user
async addUser(createUserDTO: CreateUserDTO): Promise<User> {
const newUser = await this.userModel(createUserDTO);
return newUser.save();
}
这是 users.controller.ts 中的 POST Controller 方法 -
// add a user
@Post('/create')
async addUser(@Res() res, @Body() createUserDTO: CreateUserDTO) {
const user = await this.usersService.addUser(createUserDTO);
return res.status(HttpStatus.OK).json({
message: "User has been created successfully",
user
})
}
我已经尝试使用 mongo 集合 findOne 方法并获取用户详细信息,如果它已经存在于 mongo 中但无法理解如何在存在时抛出异常以及在不存在时以 nest js 样式将其添加到 mongodb 中 -
const user = await this.userModel.findOne({ userName: createUserDTO.userName });
我将不胜感激:)
注意:在 nest js 中完全是新手
最佳答案
您可以修改 user.service.ts 文件,使其包含一个单独的方法来检查用户是否存在。
async doesUserExists(createUserDTO: CreateUserDTO): any {
const user = await this.userModel.findOne({ userName: createUserDTO.userName });
if(user.length != 0){
return true;
}
return false;
}
在你的user.controller文件中,你可以调用user service中的user exists函数来检查然后进行相应的处理
// add a user
@Post('/create')
async addUser(@Res() res, @Body() createUserDTO: CreateUserDTO) {
if(await this.userService.doesUserExists()){
return res.status(HttpStatus.OK).json({
message: "User already exists"
})
}
const user = await this.usersService.addUser(createUserDTO);
return res.status(HttpStatus.OK).json({
message: "User has been created successfully",
user
})
}
关于javascript - 如果用户存在于 mongo 上并创建用户,如何使用 nest js 抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57705716/