node.js - sqlite3 nodejs - 同步返回数据

标签 node.js select sqlite

我在 sqlite3 和 nodejs 上找到的每个示例都只是将数据写入控制台,这是无用的 - 如何等待数据并从调用方法返回它?可以说我有:

exports.selectData = function(tableName, parameters, successHandler) {
  var dbConn = new sqlite3.Database('./data/myAppsData.db');
  dbConn.all("SELECT " + parameters + " FROM " + tableName + "", function(err, rows) {
    // what to do here ? or somewhere else ?
  });
}

如何获取从 selectData 返回的数据(行)?或者,使用 successHandler 回调? (注释所在位置未定义)

最佳答案

  dbConn.all("SELECT " + parameters + " FROM " + tableName + "", function(err, rows) {
    return rows // could replace with JSON.stringify(rows) If you want to pass JSON data
  });

或者正如 ionizer 所说,你可以返回一个 promise 。如果需要使用async/await

exports.selectData = function(tableName, parameters, successHandler) {
  var dbConn = new sqlite3.Database('./data/myAppsData.db');
  return new Promise((resolve, reject) => {
   dbConn.all("SELECT " + parameters + " FROM " + tableName + "", 
    function(err, rows) {
     if(err) { 
       reject (err);
     } else {
       resolve(rows);
     }
   });
  });
}

关于node.js - sqlite3 nodejs - 同步返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47720686/

相关文章:

android - SQLite 中的 SELECT 条目,没有 WHERE 条件?

sqlite - 返回在列中具有完全相同项目的不同名称对

javascript - Mongoose ODM 在 MongoDB 集合中保存错误的模型名称

javascript - 增加nodejs管道的最大字节大小

MYSQL 内连接(SQL 代码中的 If 语句?)

database - 在 ios7 中读取预填充的 Sqlite.db

javascript - SQL语句在一次插入后停止

node.js - Elastic Search中unicode(emoji)字符的字符串查询

ruby-on-rails - pluck()/select() 的 Rails 逆

ruby-on-rails - 在 Rails collection_select 中使用短日期时间