我正在使用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