我正在尝试从google驱动器中获取用户表单的列表。这是下面的代码(我的API中的GET请求):
checkZero
问题是设置凭据后,我试图通过listFiles函数将数据发送到我的控制器(AngularJS),该函数可以访问所有表单,但是它不发送任何响应。 不胜感激。谢谢。
答案 0 :(得分:0)
您需要了解异步编程,您需要使用callback
或Promise
或只是在res.send()
函数中调用listFiles
函数,下面的示例可能对您有所帮助< / p>
router.get("/googleToken", function (req, res) {
// Function to retrieve forms after AUTH
function listFiles(auth) {
const drive = google.drive({
version: 'v3',
auth
});
drive.files.list({
q: "mimeType='application/vnd.google-apps.form'",
fields: 'nextPageToken, files(id, name)',
}, (err, res) => {
if (err) {
console.log('The API returned an error: ' + err);
return res.status(500).send(err);
}
var files = res.data.files;
if (files.length) {
return res.send(files);
} else {
console.log('No files found.');
return res.status(400).send({message: 'No files found.'});
}
});
}
var code = req.query.code;
oauth2Client.getToken(code, function (err, tokens) {
if (err) {
console.log(err);
return res.send(err);
} else {
oauth2Client.setCredentials(tokens);
listFiles(oauth2Client);
}
});
});
以下示例使用Promise
router.get("/googleToken", function (req, res) {
// Function to retrieve forms after AUTH
function listFiles(auth) {
return new Promise(function (resolve, reject) {
const drive = google.drive({
version: 'v3',
auth
});
drive.files.list({
q: "mimeType='application/vnd.google-apps.form'",
fields: 'nextPageToken, files(id, name)',
}, (err, res) => {
if (err) {
console.log('The API returned an error: ' + err);
return reject(err);
}
var files = res.data.files;
if (files.length) {
return resolve(files);
} else {
console.log('No files found.');
return reject({message: 'No files found.'});
}
});
});
}
var code = req.query.code;
oauth2Client.getToken(code, function (err, tokens) {
if (err) {
console.log(err);
return res.send(err);
} else {
oauth2Client.setCredentials(tokens);
listFiles(oauth2Client)
.then( function(files) {
res.send(files);
})
.catch( function(err) {
console.log(err);
res.send(err);
});
}
});
});