0

I am trying to convert one loopback callback function to promise, but I am not able to convert it. The code for is

let ds = app.datasources.ace_db
ds.connector.execute(sql,[],(err, data ) => {
   console.log('datalogger', data);
});

Is there any method to convert this peace of code to promise?

n4m31ess_c0d3r
  • 3,028
  • 5
  • 26
  • 35

2 Answers2

3

What you want to do is wrap your ds.connector.execute in a Promise, and return that Promise like so:

const dsConnectorPromise = function(sql, arr) {

    let p = new Promise((resolve, reject) => {

        ds.connector.execute(sql, arr, (err, data) => {

            if(err) reject(err);
            else resolve(data);
        });
    });

    return p; // return promise
};

You can then go on to use dsConnectorPromise like so:

dsConnectorPromise(sql, []).then(data => {

    console.log(data);

}).catch(err => console.log(err));
Christian Santos
  • 5,386
  • 1
  • 18
  • 24
1

You could do a Promise.promisify()

let p = Promise.promisify(ds.connector.execute);
p(sql, []).then(...)
Vasan
  • 4,810
  • 4
  • 20
  • 39