Я взял один из примеров быстрого запуска google nodejs examples как образец того, как выполнить oauth, переписав его как объект класса, чтобы я мог включить его в свой более крупный проект.Я могу успешно запустить API-скрипт скрипта приложения scripts.run и получить действительное возвращаемое значение в объекте класса, но не как вернуть его в содержащий проект.
scripts.run содержащая функция выглядит следующим образом
Goo.prototype.testAuth = function( auth ){
var script = google.script('v1');
var cmd = {
auth,
resource: { function: 'test_auth', devMode: true },
scriptId: '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
};
script.scripts.run(
cmd,
function( err, resp ){
if( err ){ console.log('The API returned an error: ' + err);return }
if( resp.error ){console.log('Script error message: '
+ resp.error.details[0].error.errorMessage);}
else {
console.log('resp from api call', resp.response.result );
return resp.response.result ;
}
});
};
с return resp.response.result проблемной частью, потому что она не передана обратно var response в контейнере
var Goo = require('./Goo.js');
var goo = new Goo();
var response = goo.test_auth();
console.log('response to use elsewhere ',response);
, как известно специалистам, console.log в классе Goo возвращает значение, в то время как console.log в контейнере возвращает неопределенное значение.
Весь класс Goo упакован следующим образом, если это важно
(function(){
var Goo = (function(){
var Goo = function(config){
}
Goo.prototype.test_auth = function(){
this.authorize( this.testAuth );
};
Goo.prototype.testAuth = function(){};
Goo.prototype.authorize = function(){};
})();
module.exports = Goo;
})();
Как мне структурировать его так, чтобы он возвращал значение, которое будет использоваться в контейнере?
Я неясно, должен ли я пытаться обернуть скрипт script.scripts.run в обещание, если он уже возвращает обещание, и я не знаю, как ожидать его возврата, или если тот факт, что я имею дело с функцией обратного вызова, приводит кчто неправильное решение.Любое руководство здесь приветствуется.
Я использую node.js и googleapis ^ 24.0.0