承诺,返回.then函数的结果

时间:2014-11-03 12:17:16

标签: node.js promise

我正在使用bluebird作为我的节点服务器和mysql。 我有几个问题。第一个模块中有功能

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 will a promisified mysql module work with NodeJS?学到的mysql。

问题1:我可以从模块promisifyed对象返回,或者我必须这样做:

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

在我需要Person的每个新模块中。

问题2:如何从上面的函数中接收数据,当我这样做时,我什么都没得到:

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

UPD:当我打电话时

dbPerson.getPersonAsync(personId)

我在.spread

中收到了结果

UPD 2:我得到了这个

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

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

已解决:我删除了这一行 promise.promisifyAll(dbPerson);

我认为这是因为dbPerson.getPerson(personId)已经返回promise

0 个答案:

没有答案
相关问题