Получение одного сообщения из графика

#javascript #node.js #microsoft-graph-api

#javascript #node.js #microsoft-graph-api

Вопрос:

Я пытаюсь получить одно электронное письмо из почтового ящика Office 365.

Я отправляю электронное письмо id в свое приложение через POST ( req.body.id ), а затем вызываю этот код, чтобы получить некоторые свойства электронной почты:

 router.post('/id', async function(req, res, next) {
    console.log("email with ID -> ", req.body.id)
    let parms = { title: 'Inbox', active: { inbox: true } };
    const accessToken = await authHelper.getAccessToken(req.cookies, res);
    const userName = req.cookies.graph_user_name;

    if (accessToken amp;amp; userName) {
    parms.user = userName;
    // Initialize Graph client
    const client = graph.Client.init({
        authProvider: (done) => {
        done(null, accessToken);
        }
    });

    try {
        const result = await client
        .api('/me/messages/', req.body.id)
        .select('id,subject,from,toRecipients,ccRecipients,body,sentDateTime,receivedDateTime')
        .get();

        parms.messages = result.value;
        console.log("email -> ", result.value);
        res.render('message', parms);

    } catch (err) {
        parms.message = 'Error retrieving messages';
        parms.error = { status: `${err.code}: ${err.message}` };
        parms.debug = JSON.stringify(err.body, null, 2);
        res.render('error', parms);
        }

    } else {
    // Redirect to home
    res.redirect('/');
    }
});
  

На данный момент result.value содержит все сообщения в почтовом ящике, а не только сообщение с предоставленным id .

Может кто-нибудь сказать мне, где моя ошибка, пожалуйста?

Ответ №1:

api Метод имеет один параметр пути. Вызов его like .api('/me/messages/', req.body.id) эффективно отправляет ему путь («/me / messages /») вместе с дополнительным параметром, который он игнорирует.

Вам нужно отправить ему одну строку, поэтому вам нужно добавить req.body.id к path ( {path} {id} ):

 const result = await client
  .api('/me/messages/'   req.body.id)
  .select('id,subject,from,toRecipients,ccRecipients,body,sentDateTime,receivedDateTime')
  .get();