javascript - 如果用户存在于 mongo 上并创建用户,如何使用 nest js 抛出异常?

标签 javascript node.js mongodb express nestjs

这是 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/

相关文章:

使用 Node.js 的加密有问题

javascript - 如何在 JavaScript 中对称拆分字符串?

javascript - 如何在 AngularJS 中删除项目后重新加载状态?

javascript - node.js javascript mysql查询等到插入下一行

c++ - 从 std::vector 到 mongo 数组

mongodb - 溢出排序阶段缓冲数据使用量超过内部限制

node.js - MLab 和环回 ACL - 有很多 (POST)

javascript - 我们可以用 srcset 替换图像吗?

javascript - 在 javascript 中使用混洗算法跟踪索引

node.js - Nodemailer:连接超时错误