此对象在 运行() 方法的回调函数中为空
This object is empty inside callback function of run() method
我正在使用 NodeJS、Express 和 SQLite 编写服务器以提供 RESTful 服务。
我想创建一个端点以将新用户添加到数据库中。端点收到带有参数 username 和 password 的 POST 请求,并以 id[=35] 响应=] 新创建的用户。
根据node-sqlite3
包documentation,当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
}
);
}
);
});
尝试使用老式 function
代替箭头函数进行回调。我认为箭头函数 this
不能绑定到一个值。
我正在使用 NodeJS、Express 和 SQLite 编写服务器以提供 RESTful 服务。
我想创建一个端点以将新用户添加到数据库中。端点收到带有参数 username 和 password 的 POST 请求,并以 id[=35] 响应=] 新创建的用户。
根据node-sqlite3
包documentation,当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
}
);
}
);
});
尝试使用老式 function
代替箭头函数进行回调。我认为箭头函数 this
不能绑定到一个值。