Я пытаюсь создать CRUD для пользователя в своем веб-приложении. Я использую uuid для своего идентификатора (также первичный ключ, как показано в таблице пользователей ниже). Я использую библиотеку pg-promise для подключения к Postgres. Код маршрута для создания пользователей и получения работы всех пользователей. Но у меня возникла проблема с тем, как ссылаться на uuid при создании id const для получения одного пользователя, удаления пользователя или обновления пользователя, т.е. const user_id = parseInt(req.params.id);
Пожалуйста, смотрите мои примеры кодов ниже. Я также буду признателен за любой онлайн-ресурс с примером.
МОЯ ПОЛЬЗОВАТЕЛЬСКАЯ ТАБЛИЦА
CREATE TABLE m_user (
id uuid DEFAULT uuid_generate_v4() NOT NULL,
username text NOT NULL UNIQUE,
password text NOT NULL,
confirm_password text NOT NULL,
created_at timestamp NOT NULL default now(),
last_login timestamp NOT NULL default now(),
PRIMARY KEY (id)
);
CRUD ДЛЯ ПОЛУЧЕНИЯ ОДНОГО ПОЛЬЗОВАТЕЛЯ
function getSingleUser(req, res, next) {
const showoneuserquery = 'SELECT * FROM user where id = $1'
const user_id = parseInt(req.params.id);
db.one(showoneuserquery, user_id)
.then(function (data) {
res.status(200)
.json({
status: 'success',
data: data,
message: 'Retrieved ONE user'
});
})
.catch(function (err) {
return next(err);
});
}
CRUD ДЛЯ ИЗМЕНЕНИЯ ПОЛЬЗОВАТЕЛЯ
function editUser(req, res, next) {
const edituserquery = 'update user set username=$1, password=$2, confirm_password=$3 where id=$4'
db.none(edituserquery, [req.body.username, req.body.password, req.body.confirm_password, (req.params.id)])
.then(function () {
res.status(200)
.json({
status: 'success',
message: 'Updated user'
});
})
.catch(function (err) {
return next(err);
});
}
req.params.id
? Обычно вы указываете это значение в своем маршрутизаторе так:router.get('/:id', getSingleUser)
. Если это не то, что вы имели в виду, можете ли вы более конкретно рассказать об ошибке, которую вы получаете? - person Khauri   schedule 14.12.2019router.get('/:id', getSingleUser).
Часть, с которой я смущаюсь, - это место, где я объявляю константу для user_idconst user_id = parseInt(req.params.id);
Поскольку я использую uuid, я думаю, что мне следует использовать что-то другое, кроме функции parseInt. - person Jetro Olowole   schedule 14.12.2019BIGSERIAL
). UUID — это просто строки, и они используются как таковые везде, в то время как 64-битные целые числа имеют некоторые особенности, например объяснено здесь. - person vitaly-t   schedule 15.12.2019