0

I'm using bluebird for my node server and mysql. I have a few questions. There are function inside first module

this.__proto__.getPerson = function (personId) {
    promise.using(db_conn.getSqlConnection(), function (conn) {
        var q = 'SELECT * FROM Persons WHERE person_id = ' + conn.escape(personId) + ';';
        return conn.queryAsync(q);
    })
        .spread(function (rows, fields) {
            return rows;
        })
        .catch(function (err) {
            throw new Error(err.message, err.code);
        });
};

How to promisify mysql i learned from How will a promisified mysql module work with NodeJS?.

question 1: Can I return from module promisifyed object, or I have to do:

var dbPerson = new mPerson();
promise.promisifyAll(dbPerson);

in every new module where I need the Person.

question 2: How can i receive data from function above, when i do so, i'm getting nothing:

dbPerson.getPersonAsync(personId).then(function(rowPerson){
            console.log(rowPerson);
        });

UPD: When I'm calling

dbPerson.getPersonAsync(personId)

I'm getting result inside .spread

UPD 2: I got this

console.log(dbPerson.getPersonAsync(personId));

{ _bitField: 0,
 _fulfillmentHandler0: undefined,
 _rejectionHandler0: undefined,
 _promise0: undefined,
 _receiver0: undefined,
 _settledValue: undefined,
 _boundTo: undefined }

Resolved: I removed this line promise.promisifyAll(dbPerson);

I think this is because the dbPerson.getPerson(personId) already returns a promise

Community
  • 1
  • 1
undef.ms
  • 89
  • 2
  • 8

0 Answers0