带有回调的async/await服务响应问题



我正在使用node-firebird JavaScript模块来查询Firebird数据库。

模块用回调响应,我不能让async/await为我工作,等待该模块的响应。

"padron.controller"控制器调用"padron.service"执行查询的服务

try {
let res = await this.padronService.getFamilia(body);
console.log('padron.controller - Response from padron.service', res);
return res;
} catch {
throw new Error('Erro na DB');
}

"padron.service"呼叫"firebird.service";它将所有的查询集中到DB。

try {
let res = await this.firebirdService.getQuery(query, params);
console.log('padron.service - Response from FirebirdService ================', res);
return res;
} catch {
throw new Error('Erro na DB');
}

"firebird.service"使用"节点"标准库and and返回一个回调。

fb.attach(this.options, (err, db) => {
if (err) throw new Error('Erro na conexión á DB');
db.query(query, params, (err, res) => {
if (err) throw new Error('Erro na consulta ó Padrón');;
console.log('firebird.service - Response DB ================', res);
db.detach();
return res
});
});

我的问题是答案的顺序

padron.service - Response desde FirebirdService ================ undefined
padron.controller - Response desde padron.service undefined
firebird.service - Response DB ================ {
USU_USUARIO: 'SUPER',
USU_CLAVES: '',
USU_CARGO: 'ADMINISTRADOR',
USU_TER: null,

时的顺序应为

firebird.service - Respuesta DB ================ { 
USU_USUARIO: 'SUPER',
USU_CLAVES: '',
padron.service - Respuesta desde FirebirdService ================ undefined
padron.controller - Respuesta desde padron.service undefined

wait不等待DB的回调

我不知道该怎么修理它。

包装您在padron中提到的代码。服务与承诺如下。现在,从数据库返回的值通过在resolve callback中传递来返回,如果有错误,则在reject callback中传递。

请注意,在错误的情况下,将它传递给异步任务中的拒绝回调,因为与抛出错误

相比,它不会给出意外的输出。
return new Promise((resolve, reject) => {
fb.attach(this.options, (err, db) => {
if (err) {
// throw new Error('Erro na conexión á DB');
reject('Erro na consulta ó Padrón');
}
db.query(query, params, (err, res) => {
if (err) {
// throw new Error('Erro na consulta ó Padrón');
reject('Erro na consulta ó Padrón');
}
console.log('firebird.service - Response DB ================', res);
db.detach();
// return res
resolve(res);
});
});
});

相关内容

  • 没有找到相关文章

最新更新