如何通过在量angular器中使用promise来查询mysql数据库

如何通过在量angular器中使用promise来查询mysql数据库?

我想在testing执行过程中多次执行不同的查询,但我的executeSelectQuery函数在testing开始时执行,而不是结束。 我如何用承诺来克服这个问题?

我也需要访问executeSelectQuery中的对象,我不能。 函数返回undefined。

下面的代码是我的executeSelectQuery函数的样子:

function executeSelectQuery(sql){ connectDatabase.connection.query(sql, function(err, data) { var result; if (err) { throw new Error('[ FAIL ] - Unsuccessful query execution!!!'); } else{ result = data[0].user; log.info('[ SUCCESS ] - Query executed successfully: ' + sql + ' with the following result ==> ' + result); return result; } }); 

}

这就是我的testing:

 it('Should navigate to webpage..', function(){ log.info("Test is being executed.."); login.goTo(parameters.url); login.login(parameters.username, parameters.password); helper.executeSelectQuery(query_select); }); 

只要让你的executeSelectQuery()函数返回一个可以parsing数据的promise。

 executeSelectQuery = (sql) => { return new Promise((resolve, reject) => { connectDatabase.connection.query(sql, (err, data) => { if(err) { reject(err); } resolve(data); }); }); } 

然后在你的testing中解决它

 executeSelectQuery().then((data) => { console.log(data); }) 

保持查询函数在最后一个单独的“it”块中调用

 describe('Overall Test Suite',function() { var expectedResult; //global variable for all 'it' blocks inside suite. it('Should navigate to webpage..', function(){ log.info("Test is being executed.."); login.goTo(parameters.url); login.login(parameters.username, parameters.password); }); it('Executing Queries', function(){ expect(helper.executeSelectQuery(query_select)).toBeEqual(expectedResult);//let jasmine resolve the promise implicitly }); });