Я пытаюсь добавить новых пользователей в базу данных и автоматически повторять идентификатор. То, как я пытаюсь это сделать, - сначала запустить запрос, чтобы проверить общее количество строк, а затем добавить к нему 1, чтобы назначить идентификатор пользователя, которого я хочу добавить.
Одна из проблем, с которой я столкнулся, заключается в том, что в первом запросе назначение newUser.id ограничено блоком, и я не могу получить доступ к этому значению за его пределами. Идентификатор для newUser остается нулевым или неопределенным в зависимости от того, как я перемещаю вещи
/add user to DB
router.post("/", (req, res) => {
var newID;
const newUser = {
id: null,
name: req.body.name,
email: req.body.email,
active: true
};
db.result("SELECT COUNT(*) FROM users")
.then(data => {
newID = parseInt(data.rows[0].count) + 1;
newUser.id = newID;
//IF I CONSOLE.LOG(newUser) here then the value for id is 14
});
//IF I CONSOLE.LOG(newUser) here then the value for id is NULL
db.none(
"INSERT INTO users(id, name, email, active) VALUES ($1, $2, $3, $4)",
[newUser.id, newUser.name, newUser.email, newUser.active]
)
.then(data => {
res.status(200).json({ msg: "new user was added" });
})
.catch(error => {
console.log("ERROR", error);
});
serial
или столбецidentity
в postgres? Тогда вам вообще не нужно делать несколько запросов к БД. - person Bergi   schedule 24.02.2020ERROR: duplicate key value violates unique constraint "users_pkey" DETAIL: Key (id)=(12) already exists. SQL state: 23505
- person Joon Joonam   schedule 24.02.2020id
вне оператораINSERT
, чтобы он использовал сгенерированное значение по умолчанию. - person Bergi   schedule 24.02.2020