【发布时间】:2020-11-22 22:13:25
【问题描述】:
我正在尝试将数据发布到我的本地 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 () {
})
})
【问题讨论】:
-
你希望 promise 解决什么问题?你插入的值?但是你已经知道了,因为你提供了这些值......你唯一需要知道的是它是否成功。
-
@trincot -- 那么,您认为我可以在当前行中运行另一个
db.run来获取刚刚插入的行吗?因为它仍然会在同一个连接上。 -
您为什么要这样做?您刚刚使用了带有您知道的值的 INSERT。那么为什么您需要再次获取这些信息?
-
@trincot 我想从数据库中获取它。我需要从数据库中获取一些我不知道的东西。
-
我不明白。我在你的代码中没有看到。请在你的问题中具体。数据库中有什么你不知道的?
标签: javascript node.js sqlite express electron