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

标签 javascript node.js sqlite express electron

我正在尝试将数据发布到我的本地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/

相关文章:

javascript - 使用名为 piety 的 jQuery 图表插件设置多个 if 条件

javascript - ExpressJs res.sendFile 在中间件之后不起作用

node.js - 使用 nodejs gcloud api 删除 Google Cloud Storage 中的文件夹

node.js - undefined 不可迭代(无法读取属性 Symbol(Symbol.iterator))

sqlite - 使用 go 正确使用 sqlite3.BusyFunc?

javascript - HTML 中的鼠标锁定 API

javascript - 带有 OAuth 2.0 的新 JS SDK 在 fbsr_ cookie 中保存子域?

javascript - 重复 3 次后拆分字符串 <br>

android - SQLite 的精简版/嵌入式替代品(在 Android 中)?

python 和 sqlite - 转义输入