【发布时间】:2021-03-05 13:37:22
【问题描述】:
我已经设置了Node.js Express API with TypeScript 3,它工作正常。 我在尝试更新记录时遇到问题。
RecordsRouter.ts
import { Router } from 'express';
import {RecordComponent} from '../../components';
const router: Router = Router();
router.get('/', RecordComponent.findAll);
router.get('/:id', RecordComponent.findOne);
router.post('/', RecordComponent.create);
router.delete('/:id', RecordComponent.remove);
router.put('/:id', RecordComponent.update);
export default router;
我的 RecordComponent.ts
export async function update(req: Request, res: Response, next: NextFunction): Promise <void> {
try {
const record: IRecord = await RecordService.put(req.body)
res.status(201).json(record);
} catch (error) {
next(new HttpError(error.message.status, error.message));
}
}
还有我的 IRepository.ts
export interface IRepository<T> {
findAll(): Promise<T[]>;
findOne(code: string): Promise<T>;
insert(T: any): Promise<T>;
remove(id: string): Promise<T>;
put:(T: any)=>Promise<T>;
}
服务.ts
异步放置(数据:IRecord):承诺{ 尝试 { 常量验证:Joi.ValidationResult = RecordValidation.updateRecord(data);
if(validate.error) {
throw new Error(validate.error.message);
}
return await RecordModel.findOneAndUpdate(data);
} catch (error) {
throw new Error(error.message);
}
},
【问题讨论】:
-
我假设你忘记在 RecordService 对象中声明
put方法 -
是的,你是对的。
-
可以分享
Record/service.ts吗?如果没有完整的上下文,很难修复它。您还可以分享 github 最小可重现 repo
标签: node.js typescript rets