Я создаю API
с Restify
, который основан на Express
. Я использую 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
, чтобы добиться этого.
Это хороший способ? Что вы предлагаете для улучшения?