Javascript 尝试返回db搜索结果时返回未定义
我正在用neDB创建electron应用程序 我想创建一个函数: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
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({})
)即可,但您可能需要在调用时处理错误。