我正在尝试将数据发布到我的本地 sqlite 数据库。数据在 POST 后出现在我的数据库表中,但Promise.resolve()返回 as undefined,这又不会将结果返回给客户端。我错过了什么吗?任何帮助,将不胜感激。这是我得到的。module.exports.addAccount = function (data) {const db_conn = new sqlite3.Database( path.join(__dirname, "../user_database.sql") )return new Promise( function (resolve, reject) { db_conn.serialize( function () { // insert row db_conn.run("INSERT INTO some_table (username) VALUES (?);", [data.username], function (err,rows) { if (!err) { console.log(rows) // always returns undefined resolve([rows, this.lastID]) } else { reject(err) } }) }) db_conn.close() })}然后:app.post("/add-row", function (req, res) {user_info.addAccount(req.body).then( function(response) { res.json({ rows: response[0], // this is undefined row_id: response[1] // this is not })}).catch(function () {})})
1 回答

慕后森
TA贡献1802条经验 获得超5个赞
这可能会解决您的问题:
db_conn.run("INSERT INTO some_table (username) VALUES (?);", ['string'], function (err) {
if (!err) {
db_conn.get("SELECT * FROM some_table WHERE rowid=?", [this.lastID], function(err, rows) {
db_conn.close()
resolve([rows])
})
} else {
reject(err)
}
})
我假设rowid但也许你的表有另一个主键。我还建议采用async/await而不是 Promise 在关闭连接之前等待您的查询完成。
添加回答
举报
0/150
提交
取消