我正在使用带有类型记录、typeorm和inversify的nodejs来管理依赖注入和反版本快捷键来处理控制器,当我在里面发送响应或catch块时,只返回204没有内容响应,但是如果我发送响应是出于它的承诺,那么某个曾经参与过不可逆转的人知道会发生什么?
用户控制器:
@controller("/user")
export class UserController implements interfaces.Controller {
constructor(@inject(TYPES.UserService) private _userService: IUserService) {}
@httpGet("/")
public GetAll(@request() req: Request, @response() res: Response) {
this._userService
.GetAll()
.then((users) => res.send(users))
.catch((error) => res.send(error));
}
}用户服务:
@injectable()
export class UserService implements IUserService {
private readonly _userRepository: IUserRepository;
constructor(@inject(TYPES.UserRepository) userRepository: IUserRepository) {
this._userRepository = userRepository;
}
public GetAll(): Promise<Array<User>> {
return this._userRepository.GetAll();
}
}用户存储库:
@injectable()
export class UserRepository implements IUserRepository {
public GetAll(): Promise<Array<User>> {
const userRepository = getRepository(User);
return userRepository.find();
}容器和服务器配置:
export abstract class ServerConfig {
protected app: Application;
constructor() {
this.Config();
}
private Config(): void {
const container = new Container();
container.bind<IUserService>(TYPES.UserService).to(UserService);
container.bind<IUserRepository>(TYPES.UserRepository).to(UserRepository);
const server = new InversifyExpressServer(container);
server.setConfig((app) => {
app.use(cors());
app.use(helmet());
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
app.use(morgan("dev"));
dotenv.config();
app.set("port", process.env.PORT || 8000);
});
this.app = server.build();
}
public Start(): void {
this.app.listen(this.app.get("port"), () => {
console.log(`Server on port ${this.app.get("port")}`);
});
}
}发布于 2022-04-04 20:01:39
您需要返回承诺,或者只是等待服务的响应。就像这样:
@controller("/user")
export class UserController implements interfaces.Controller {
constructor(@inject(TYPES.UserService) private _userService: IUserService) {}
@httpGet("/")
public async GetAll(@request() req: Request, @response() res: Response): Response {
try {
const users = await this._userService.GetAll();
return res.status(200).json(users);
} catch(error) {
return res.status(500).json(error)
}
}
}https://stackoverflow.com/questions/69505963
复制相似问题