首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用node-sqlite3从sqlite3数据库返回ids数组

使用node-sqlite3从sqlite3数据库返回ids数组
EN

Stack Overflow用户
提问于 2018-12-18 04:44:56
回答 2查看 550关注 0票数 2

我想使用node-sqlite3库从sqlite查询构建一个I数组。

代码语言:javascript
复制
const sqlite3 = require('sqlite3')
const db = new sqlite3.Database('./db/database-name.db')

let ids = () => {
  let sql = `select id from users;`
  let result = []
  db.each(sql, (err, row) => {
    // console.log(row.id)
    result.push(row.id)
  })
  return result
}

console.log(ids())

console.log()语句打印一个空数组。我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-09 04:49:47

通过使用一个承诺包装对db.each的调用,我能够达到预期的结果:

代码语言:javascript
复制
const selectIds = () => {
  return new Promise((resolve, reject) => {
    let result = []
    db.each(`select id from users;`, (err, row) => {
      if(err) { reject(err) }
      result.push(row.id)
    }, () => {
      resolve(result)
    })
  })
}

selectIds().then((ids) => console.log(ids)
票数 1
EN

Stack Overflow用户

发布于 2018-12-18 05:28:40

您将在db.each函数完成之前返回数组。这就是为什么它返回一个空数组。

要实现所需的结果,您需要传递一个函数,该函数在所有行都被拉出后进行回调。

代码语言:javascript
复制
let ids = () => {
  let sql = `select id from users;`
  let result = []
  db.each(sql, (err, row) => {
    result.push(row.id)
  }, () => {
    console.log(result)
  })
}

ids()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53822736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档