Я ищу лучший способ обновить сущность User
с помощью typeorm и express.
У меня есть что-то вроде этого (я уменьшил, но есть много других атрибутов):
class User {
id: string;
lastname: string;
firstname: string;
email: string;
password: string;
isAdmin: boolean;
}
И у меня есть путь для обновления атрибутов пользователя, таких как:
app.patch("/users/me", ensureAuthenticated, UserController.update);
Теперь (и это мой вопрос), как правильно обновить пользователя? Я не хочу, чтобы пользователь мог добавлять себя в качестве администратора.
Итак, у меня есть:
export const update = async (req: Request, res: Response) => {
const { sub } = res.locals.token;
const { lastname, firstname, phone, email } = req.body;
const userRepository = getRepository(User);
const currentUser = await userRepository.findOne({ id: sub });
const newUserData: User = {
...currentUser,
lastname: lastname || currentUser.lastname,
firstname: firstname || currentUser.firstname,
phone: phone || currentUser.phone,
email: email || currentUser.email
};
await userRepository
.update({ id: sub }, newUserData)
.then(r => {
return res.status(204).send();
})
.catch(err => {
logger.error(err);
return res.status(500).json({ error: "Error." });
});
};
При этом я обязательно обновлю нужные атрибуты, а пользователь не сможет обновить admin.
Но я считаю очень многословным создание нового объекта и заполнение информации.
У вас есть лучший способ сделать это?
Спасибо.