Esercizio - Caricare i messaggi di posta elettronica di un utente in batch
In questo esercizio si estenderà l'app per consentire il caricamento dei messaggi di posta elettronica di un utente in batch di 10 elementi.
Caricamento dei messaggi di posta elettronica in batch di 10 elementi
Per iniziare, aggiornare la funzione getEmails() per caricare i messaggi di posta elettronica in batch di 10 elementi. Se la successiva serie di messaggi di posta elettronica da caricare è stata definita, viene passata come argomento della funzione.
Nell'editor di codice aprire il file graph.js.
Aggiornare la firma della funzione
getEmails()in modo che accetti un singolo argomentonextLink:async function getEmails(nextLink) { // ... }Se è stato impostato
nextLink, la funzione deve passarlo all'SDK per recuperare i dati. SenextLinknon è stato impostato, la funzione deve caricare il set iniziale di dati. Aggiornare la funzionegetEmails()sostituendo l'istruzionereturncon l'istruzioneifseguente:if (nextLink) { return await graphClient .api(nextLink) .get(); } else { return await graphClient .api('/me/messages') .select('subject,receivedDateTime') .orderby('receivedDateTime desc') .top(10) .get(); }La funzione
getEmails()aggiornata deve avere l’aspetto seguente:async function getEmails(nextLink) { ensureScope('mail.read'); if (nextLink) { return await graphClient .api(nextLink) .get(); } else { return await graphClient .api('/me/messages') .select('subject,receivedDateTime') .orderby('receivedDateTime desc') .top(10) .get(); } }
Estensione del modello per consentire agli utenti di caricare altri messaggi di posta elettronica
La funzione getEmails() è stata estesa in modo da caricare altri messaggi di posta elettronica. Il passaggio successivo consiste nel visualizzare un pulsante che consentirà agli utenti di caricare altri messaggi di posta elettronica, se disponibili.
Nell'editor di codice, aprire il file index.html.
Individua la riga
<ul id="emails"></ul>e aggiungi il codice seguente subito dopo per aggiungere un pulsante che consenta agli utenti di caricare più messaggi di posta elettronica.<div id="loadMoreContainer" style="display: none;"> <button onclick="displayEmail();">Load more</button> </div>
Caricamento di ulteriori messaggi di posta elettronica
Con l'app aggiornata per consentire agli utenti di caricare altri messaggi di posta elettronica, il passaggio finale consiste nell'aggiungere funzionalità per gestire il caricamento di altri messaggi di posta elettronica.
Nell'editor di codice aprire il file ui.js.
Prima della funzione
displayEmail(), definire una nuova variabile denominatanextLinksenza assegnarle un valore:var nextLink;Nella funzione
displayEmail()aggiornare la chiamata per fare in modo che la funzionegetEmails()includa ilnextLink.var emails = await getEmails(nextLink);Successivamente, dopo aver recuperato i dati, ottenere il valore della proprietà
@odata.nextLink. Se impostato, indicherà che sono disponibili più dati da visualizzare per gli utenti. Aggiungere il codice seguente subito dopo l'istruzioneifnella funzionedisplayEmail():nextLink = emails['@odata.nextLink'];Alla fine della funzione
displayEmail(), dopo aver visualizzato i messaggi di posta elettronica recuperati, scorrere fino alla fine della pagina in modo che l'utente possa visualizzare immediatamente i messaggi di posta elettronica recuperati.window.scrollTo({ top: emailsUl.scrollHeight, behavior: 'smooth' });Infine, controllare se
nextLinkè stato restituito e, se lo è stato, visualizzare il pulsante per caricare altri messaggi di posta elettronica.Aggiungere il codice seguente alla fine della funzione
displayEmail():if (nextLink) { document.getElementById('loadMoreContainer').style = 'display: block'; }La funzione
displayEmail()completata dovrebbe avere l’aspetto seguente:var nextLink; async function displayEmail() { var emails = await getEmails(nextLink); if (!emails || emails.value.length < 1) { return; } nextLink = emails['@odata.nextLink']; document.getElementById('displayEmail').style = 'display: none'; var emailsUl = document.getElementById('emails'); emails.value.forEach(email => { var emailLi = document.createElement('li'); emailLi.innerText = `${email.subject} (${new Date(email.receivedDateTime).toLocaleString()})`; emailsUl.appendChild(emailLi); }); window.scrollTo({ top: emailsUl.scrollHeight, behavior: 'smooth' }); if (nextLink) { document.getElementById('loadMoreContainer').style = 'display: block'; } }
Esecuzione dell'app
L'app è stata estesa per mostrare i messaggi di posta elettronica di un utente usando Microsoft Graph in batch di 10 elementi e consentire loro di caricare altri messaggi di posta elettronica. Eseguire l'app in locale.
Visualizzare in anteprima l'app Web eseguendo il comando seguente nel terminale.
npm startIl browser deve puntare a
http://localhost:8080.Selezionare il pulsante Accedi con Microsoft per accedere con l'account Microsoft 365.
Dopo aver eseguito l'accesso con l'account, selezionare il pulsante Mostra messaggio.
Gli ultimi 10 messaggi di posta elettronica dovrebbero essere visualizzati nell'app.
Se nella cassetta postale sono presenti più di 10 messaggi di posta elettronica, verrà visualizzato un pulsante che consente di caricare i 10 messaggi successivi.
Arrestare il server Node.js selezionando CTRL+C nella finestra del terminale.