【问题标题】:SQLite run() callback returns empty objectSQLite run() 回调返回空对象
【发布时间】:2020-04-24 13:28:04
【问题描述】:
db.run(`UPDATE moneyset SET answer = NULL WHERE userID = '${user.id}'`, (err) => {
   if (err) throw err;
   console.log(this)
   console.log(`Template literal ${this}`);
});

根据https://www.sqlitetutorial.net/sqlite-nodejs/update 上的教程,我应该期望的结果至少是this 对象中的某些内容,但我收到的是空对象。

控制台日志:

> {}
> Template literal [object Object]

.run() 函数的结果可以在数据库中看到,所以对象不能为空。

【问题讨论】:

  • 如果很重要 .run() 方法嵌套在 .get() 回调中,这是我试图解决的糟糕设计。上下文hastebin:hastebin.com/ozevupuqit.js

标签: javascript sql node.js sqlite


【解决方案1】:

console.log 告诉您this 是一个对象。您不想询问该对象的changes 属性吗,就像教程中的这一行?

console.log(`Row(s) updated: ${this.changes}`); 

【讨论】:

  • 它是空的,没有changes 属性,即使有更改的行。但据我所知,它永远不应该为空,如果没有行受到影响,它应该具有 changes = null/undefined 和 lastid = null 属性。
  • 根据the answer to this post,问题是在“箭头函数”中使用“this”。由于本教程中的示例没有使用箭头函数,请尝试更改它,看看会发生什么。
  • 我遇到了这个问题。我在匿名函数中调用 db.run() 。当函数是匿名的时,这不存在。我命名了匿名函数并且它起作用了
猜你喜欢
  • 2019-07-03
  • 2022-01-17
  • 2021-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-29
  • 2015-02-11
  • 2020-12-21
相关资源
最近更新 更多