gpt4 book ai didi

javascript - promise 解决未定义,但数据仍已过帐

转载 作者:行者123 更新时间:2023-12-03 12:25:23 24 4
gpt4 key购买 nike

我正在尝试将数据发布到我的本地sqlite数据库中。数据在POST之后显示在我的数据库表中,但是Promise.resolve()返回为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 () {

})
})

最佳答案

这可以解决您的问题:

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,以在关闭连接之前等待查询完成。

关于javascript - promise 解决未定义,但数据仍已过帐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63219372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com