Javascript 尝试返回db搜索结果时返回未定义

Javascript 尝试返回db搜索结果时返回未定义,javascript,electron,undefined,nedb,Javascript,Electron,Undefined,Nedb,我正在用neDB创建electron应用程序 我想创建一个函数: const getAllHosts = (db) => { db.find({}, (err, hosts) => { return hosts }) } 但是当我调用这个函数时,它返回undefined,我试图将它更改为async,但它对我没有帮助。,因为您没有从getAllHosts返回任何内容 像这样试试 const getAllHosts = (db) => { r

我正在用neDB创建electron应用程序

我想创建一个函数:

const getAllHosts = (db) => {
    db.find({}, (err, hosts) => {
        return hosts
    })
}

但是当我调用这个函数时,它返回undefined,我试图将它更改为
async
,但它对我没有帮助。

,因为您没有从
getAllHosts
返回任何内容

像这样试试

const getAllHosts = (db) => {
   return new Promise((resolve, reject) => {
     db.find({}, (err, hosts) => {
       if (err) return reject(err);
       resolve(hosts)
     })
  })
}

getAllHosts().then(hosts => console.log(hosts)).catch(err => console.err(err))
const getAllHosts = async (db) => {
   try {
     const hosts = await db.find({})
     return hosts
   } catch(err) {
     throw err
   }
}

getAllHosts().then(hosts => console.log(hosts)).catch(err => console.err(err))
如果您的
db.find
已经返回了一个承诺,那么您可以尝试以下方法

const getAllHosts = (db) => {
   return new Promise((resolve, reject) => {
     db.find({}, (err, hosts) => {
       if (err) return reject(err);
       resolve(hosts)
     })
  })
}

getAllHosts().then(hosts => console.log(hosts)).catch(err => console.err(err))
const getAllHosts = async (db) => {
   try {
     const hosts = await db.find({})
     return hosts
   } catch(err) {
     throw err
   }
}

getAllHosts().then(hosts => console.log(hosts)).catch(err => console.err(err))

返回主机
不会将值返回给
getAllHosts
。或者只返回
return wait db.find({})
return db.find({})
)即可,但您可能需要在调用时处理错误。