很遗憾,我正在尝试执行以下操作: 1.阅读电子表格,并将其作为已解析的对象。 2.使用解析的对象在其中查找特定值。例如电子邮件。
电子表格用作数据库,其动机是确定给定的电子邮件是否存在。
显然,由于我不知道如何返回异步方法,因此我误解了异步方法的使用。
调用方法:
helpers.read('the-spreadsheet-id', 'Sheet1!A:Z');
阅读方法@ helpers / sheets.js:
exports.read = (spreadsheetId, range) => {
const sheets = google.sheets({ version: 'v4', auth: oAuth2Client });
return sheets.spreadsheets.values.get({
spreadsheetId,
range,
})
.then(_.property('data.values'));
};
我该怎么做才能获取json对象或类似的已解析数据对象以继续在调用方法上使用?
谢谢。
答案 0 :(得分:1)
要使异步步骤起作用,您必须声明要返回Promise
或函数为async
。异步/等待实际上实际上是在使用诺言,但这是一种更简洁的语法。
对于Promise
版本,您必须使用resolve
函数返回所需的值,并使用reject
函数引发错误。
exports.read = (spreadsheetId, range) => {
return new Promise((resolve, reject) => {
const sheets = google.sheets({ version: 'v4', auth: oAuth2Client });
sheets.spreadsheets.values.get({
spreadsheetId,
range,
})
.then(data => {
resolve(data.values);
})
.catch(err => reject(err));
});
};
使用异步/等待时,可以将查询包装在try / catch中,如果失败则抛出错误。
exports.read = async (spreadsheetId, range) => {
const sheets = google.sheets({ version: 'v4', auth: oAuth2Client });
try {
const data = await sheets.spreadsheets.values.get({
spreadsheetId,
range,
})
return data.values;
} catch(err) {
throw err;
}
};
我不使用下划线,所以我不确定您要返回的内容是什么。我假设data
是查询的结果,而您试图传递values
?