我正在使用 NodeJS、Express 和 SQLite 编写服务器以提供 RESTful 服务。
我想创建一个端点来将新用户添加到数据库中。端点接收带有参数username和password的 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
}
);
}
);
});