【发布时间】:2020-11-26 23:16:31
【问题描述】:
我正在使用基于Express 的Restify 构建API。我正在使用Typeorm,我想知道更新来自用户输入的不同属性的最佳方法是什么。
基本上我有这样的路线:
server.put('/users/:id', errorHandler(update));
触发此方法:
const update = async (req: Request, res: Response) => {
const user = { ...req.body, id: req.params.id } as User;
res.send(await userService.update(user));
}
如您所见,我使用扩展运算符创建了一个User 实体。然后,在userService.update 里面我有以下内容:
export const update = async (user: User): Promise<User> => {
const repository = getRepository(User);
const entity = await repository.findOne({ id: user.id });
if (!entity) throw new errors.ResourceNotFoundError(`There is no user with id of ${user.id}`);
Object.assign(entity, user, { id: entity.id, chat_id: entity.chat_id, project_id: entity.project_id, deleted: false });
return await repository.save(entity);
}
如您所见,我想防止API消费者提供的数据会替换一些重要的属性,例如:id, chat_id, project_id, deleted,所以我使用Object.assign的方法来实现这一点。
这是个好方法吗?您有什么改进建议?
【问题讨论】:
标签: node.js typescript express typeorm restify