Je suis en train de consulter l'api du calendrier de Google et j'ai une configuration lambda dans un asny try catch. J'ai essayé d'ajouter await à chaque fonction, j'ai essayé de déplacer le retour à après le if(err) mais cela me donne un 500. Ce que je dois faire, c'est passer les données du tableau de la fonction api du calendrier google au message pour que je puisse l'obtenir dans mon front end. Voici le lambda jusqu'à présent. Toute aide serait très appréciée. Merci
const { google } = require(googleapis)
const { OAuth2 } = google.auth
const faunadb = require(faunadb) /* Import faunaDB sdk */
// Docs on event and context https://www.netlify.com/docs/functions/#the-handler-method
exports.handler = async (event, context) => {
try {
const OAuth2Client = new OAuth2(
FDSAF,
FDSAF
)
// Connect to the database
const q = faunadb.query
const client = new faunadb.Client({
secret: FDSAFA,
})
let refreshToken
await client
.query(q.Get(q.Ref(q.Collection(AuthUrl), fdsa)))
.then(ret => (refreshToken = ret.data.title.refresh_token))
console.log(refreshToken)
OAuth2Client.setCredentials({
refresh_token: refreshToken,
})
// Create a new calender instance.
const calendar = google.calendar({ version: v3, auth: OAuth2Client })
let ok
function listEvents(callback) {
let array = []
calendar.events.list(
{
calendarId: primary,
// timeMin: new Date().toISOString(),
maxResults: 100000,
singleEvents: true,
orderBy: startTime,
},
(err, res) => {
if (err) return console.log(The API returned an error: + err)
var date = new Date()
var firstDay = new Date(date.getFullYear(), date.getMonth(), 1)
var lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0)
//console.log(res.data.items)
const events = res.data.items
if (events.length) {
// console.log(Upcoming 10 events:)
events.map((event, i) => {
const start = new Date(event.start.dateTime || event.start.date)
const end = new Date(event.end.dateTime || event.end.date)
if (start >= firstDay && end <= lastDay) {
console.log(start, end, event.summary)
//ok = test
array.push(start)
callback(array)
}
// const start = event.start.dateTime || event.start.date
// console.log(`${start} - ${event.summary}`)
})
} else {
console.log(No upcoming events found.)
}
}
)
}
let array
listEvents(function (eventList) {
array = eventList
})
return {
statusCode: 200,
body: JSON.stringify({ message: array }),
// // more keys you can return:
// headers: { headerName: headerValue, ... },
// isBase64Encoded: true,
}
} catch (err) {
return { statusCode: 500, body: err.toString() }
}
}
C'est la recherche que je fais pour lui sur le front et il retourne un objet vide
const IndexPage = () => {
fetch(/functions/list-calendar)
.then(response => response.json())
.then(response => {
console.log(response)
})