Как использовать запрос router.get в запросе router.post разных маршрутов nodejs - PullRequest
1 голос
/ 28 апреля 2020

Я работаю над приложением Nodejs и хотел бы получить результат запроса GET в запросе POST, когда два запроса не находятся на одном и том же маршруте.

Я подробно объясню вам :

У меня в libellecsv.js route есть следующий код:

const express = require('express');
const router = express.Router();
const Libellecsv = require('../../models/Libellecsv');

//@route   GET api/libellecsv
//@desc    Return all the libelle of the csv present in the database
//@access  Public
router.get('/', function (req, res, next) {
  Libellecsv.find(function (err, libelle) {
    if (err) {
      res.send(err);
    }
    res.json(libelle);
  });
});

module.exports = router;

И я хочу использовать результат этого запроса на получение в моем почтовом запросе в моем students.js routes:

//@route   POST api/students
//@desc    Fill the database with the json information
//@access  Public
router.post('/', async (req, res) => {

// HERE I WANT TO PUT THE RESULT OF THE LIBELLECSV GET REQUEST IN A VARIABLE

}

Как я могу это сделать? Это, конечно, основная проблема, но я не могу найти решение.

Спасибо за помощь.

1 Ответ

1 голос
/ 28 апреля 2020

Вы, конечно, можете просто повторно использовать репозиторий Libellecsv в вашем post -обработчике, хотя я бы обернул его обещанием, чтобы не иметь слишком много цепочек обратных вызовов (также, конечно, это требует некоторой надлежащей обработки ошибок) :

//@route   POST api/students
//@desc    Fill the database with the json information
//@access  Public
router.post('/', async(req, res) => {
    const libelle = await new Promise((resolve, reject) => {
            Libellecsv.find(function (err, libelle) {
                if (err) {
                    return reject(err);
                }
                resolve(libelle);
            });
        });
    // do something with libelle here
    console.log(libelle)

}
...