【发布时间】:2017-12-17 10:16:27
【问题描述】:
我知道 sqlite(不是 sqlite3)模块会批量请求。我需要从数据库中获取一个值,分配它,然后对其进行一些处理。但是,从数据库中获取值的函数在所有处理完成后才会返回。
我需要发生以下三件事之一:
- 立即返回函数
- 暂停代码,直到分配了 myEvent.id
-
让 sql.get 立即返回
myEvent.id = generateEventID(); ///do stuff with myEvent.id function generateEventID() { return sql.get('SELECT * FROM settings WHERE name = "eventID"').then(row => { if (!row) return message.reply("a database error occured while generating an ID"); currentID = row.intValue + 1; console.log("New eventID created: " + currentID); sql.run(`UPDATE settings SET intValue = ${row.intValue + 1} WHERE name = "eventID"`); return currentID; }); }
【问题讨论】:
-
你为什么不阅读manual? node-sqlite3 不支持承诺。
-
我做了 RTFM,你混淆了 node-sqlite github.com/kriasoft/node-sqlite 这是一个承诺使用回调的 sqlite 包装器。这在使用 Promise 的语言中很有用。使用 node-sqlite3 github.com/mapbox/node-sqlite3 包装器的命名当然非常糟糕。
标签: node.js sqlite asynchronous async-await