我知道sqlite(而不是sqlite3)模塊批量處理請求。我需要從數據庫中獲取一個值,賦值,然後對其進行一些處理。但是,在所有處理髮生之前,從數據庫獲取值的函數不會返回。NodeJS在繼續之前等待從sql.get分配變量
我需要三樣東西之一發生:
- 該函數立即返回
- 暫停代碼,直到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; }); }
(https://github.com/mapbox/node-sqlite3)? node-sqlite3不支持promise。 –
我做了RTFM,你很困惑node-sqlite https://github.com/kriasoft/node-sqlite 這是一個包裝的sqlite,promised使用回調。這在使用承諾的語言中很有用。 使用node-sqlite3 https://github.com/mapbox/node-sqlite3/ 該包裝承認具有極差的命名。 – Astrydax