小编Jon*_*oep的帖子

NestJS 中数据传输对象的目的是什么?

我正在努力解决一个问题。我正在关注 NestJS 的文档。NodeJS 的后端框架。该文档提到了 DTO(数据传输对象)。我创建了一个用于创建用户的 DTO:

export class CreateUserDto {
    readonly email: string;
    readonly password: string;
}
Run Code Online (Sandbox Code Playgroud)

与此结合:

@Post('create')
createUser(@Body() userData: CreateUserDto): User {
    return this.usersService.createUser(userData);
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我可以使用任何类型的主体向这条路线发出 post 请求。我可以在正文中放置任何类型的信息而不会出错。这种 DTO 的全部意义在于只允许身体中的某些信息,对吗?我还尝试了导出接口 CreateUserDTO,而不是使用导出类 CreateUserDTO,但这也不起作用。我也是 typescript 和 NestJS 的新手。有没有人能够解释为什么它没有按我预期的方式工作,或者这种数据传输对象的目的是什么?

data-transfer-objects dto typescript nestjs

8
推荐指数
2
解决办法
4673
查看次数

为什么我的 ExpressJS 错误处理程序不起作用?

我正在使用 ExpressJS 为我的一个项目构建一个 api,并希望实现错误处理。我在互联网上阅读了一些关于如何执行此操作的文章,并尝试了几种在我的 api 中实现错误处理的方法。我现在遇到的问题是我的错误处理程序不起作用,我不知道为什么。为了让我的问题更清楚,这是我已经尝试过的:

这是我的 index.js 文件的底部:

// Controllers
app.use("/auth", require("./controllers/auth"));
app.use("/clients", require("./controllers/clients"));

// Error handling
app.use((err, req, res, next) => {
    logger.error(
        `date - ${new Date()}, message - ${err.message}, stack trace - ${
            err.stack
        }`
    );

    return res
        .status(500)
        .json({ status: 500, message: "Something went wrong." });
});

const PORT = process.env.PORT || 3001;
app.listen(3001, () => {
    console.log(`Listening on port ${PORT}`);
});
Run Code Online (Sandbox Code Playgroud)

附带说明:我使用 WinstonJS 将错误记录到文件中,并使用 Mongoose 作为 MongoDB 数据库的 ORM。

这是客户端路由的控制器(controllers/clients.js):

const express = require("express");
const …
Run Code Online (Sandbox Code Playgroud)

javascript error-handling node.js express

1
推荐指数
1
解决办法
4076
查看次数