Я пишу сервер с использованием NodeJS, Express и SQLite для предоставления сервисов RESTful.
Я хочу создать конечную точку для добавления нового пользователя в базу данных.Конечная точка получает запрос POST с параметрами имя пользователя и пароль и отвечает id только что созданного пользователя.
Согласноnode-sqlite3
пакет документация , когда метод run
завершается успешно, объект this
внутри функции обратного вызова содержит свойства lastID
и changes
.
Моя проблемачто, даже если метод run
завершился успешно и новый пользователь successfully
вставлен в базу данных, объект this
пуст.
Что я делаю не так?Как я могу получить доступ к this.lastID
?
app.post('/users', (req, res) => {
const {
username,
password
} = req.body;
db.get(
`SELECT id
FROM Users
WHERE username = ?`,
[username],
(err, row) => {
if (err) {
console.error(err);
return res.sendStatus(500);
} else if (row) {
return res.status(400).send('Username already exist.');
}
db.run(
`INSERT INTO Users (username, password)
VALUES (?, ?)`,
[username, password],
(err) => {
if (err) {
console.error(err);
return res.sendStatus(500);
}
console.log(this); // prints {} to the console
res.send(this.lastID); // response body is empty
}
);
}
);
});