javascriptelectronundefinednedb

Returning undefined when i tried to return db search result


I creating electron app with neDB.

I want to create function:

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

But when i call this function, it return undefined, i tried to change it to async, but it not helped me.


Solution

  • Because you're not returning anything from getAllHosts.

    Try like this

    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))
    

    If your db.find already returns a promise, you can try something like this

    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))