为了账号安全,请及时绑定邮箱和手机立即绑定

承诺解析未定义,但数据仍已发布

承诺解析未定义,但数据仍已发布

富国沪深 2022-12-18 16:17:23
我正在尝试将数据发布到我的本地 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 在关闭连接之前等待您的查询完成。


查看完整回答
反对 回复 2022-12-18
  • 1 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号