Nodejs: Как я могу повторно использовать запрашиваемые данные из одного модуля в другой модуль? - PullRequest
0 голосов
/ 20 февраля 2020

Что мне нужно сделать: Я хочу получить First_Name от пользователя. js, который пользователь выбрал для идентификации. js файл, чтобы сохранить его в другой таблице MySQL. Также будет хорошо, что после его использования будет идти / пусто, чтобы предотвратить утечку памяти. Благодарю за любую помощь.

Что у меня есть:

********server/app.js*********
const express = require('express');
const app = express();
const addUser = require('./routes/user');
const identity = require('./routes/identity');
const port = 8080;
const cors = require('cors');
app.use(cors());

// routes for the app
app.post('/add', addUser);
app.use('/identity', identity);

// set the app to listen on the port
app.listen(port, () => {
    console.log(`Server running on port: ${port}`);
});


*******user.js******
module.exports = {
    addUser: (req, res) => {

        let First_Name = req.body.First_Name;
        let Last_Name = req.body.Last_Name;

        let query = "INSERT INTO `user` (First_Name, Last_Name) VALUES ('" +
                    First_Name + "', '" + Last_Name + "')";
        db.query(query, (err, result) => {
          if (err) {
              return res.status(500).send(err);
              }
           res.send('Success');
           console.log('User Created successfully !');
        });            
    }
};

******identity.js*********
const identity = express.Router();

//Store the selected option from Radiobutton in MySQL into another table
identity.post('/', (req, res) => {

    let selection = req.body.selectedOption;
    //***here I want to get First_Name which user selected in user.js***
    //const query = "INSERT INTO `document` (First_Name , selection ) VALUES ('" + First_Name + "','" + selection + "')";
    db.query(query, (err, _result) => {
        if (err) {
            return res.status(500).send(err);
        }
        res.send('Success');
        console.log('stored successfully !');
    });
});
module.exports = identity;

1 Ответ

0 голосов
/ 20 февраля 2020

Извлеките свою запись базы данных в ее собственную функцию и дайте ей интерфейс (query) => Promise. В данный момент вы выполняете запись в базу данных и в ответ в одном месте.

Заставьте новую функцию базы данных вернуть Обещание, которое она разрешит или отклонит в зависимости от результата отправки в базу данных.

Затем в обработчике записи вызовите функцию и ответьте на веб-запрос на основе результата Promise.

Экспорт функции базы данных. Импортируйте его из пользовательского модуля и используйте там.

Сделайте так, чтобы ваши функции выполняли только одну вещь, и предоставьте им интерфейсы, которые это раскрывают. Ваша запись в базе данных принимает запрос к публикации и возвращает утверждение о результате.

Ваш обработчик принимает запрос, вызывает функции, которые делают что-то, и отвечает на основе результатов. Оба обработчика будут иметь такую ​​форму, как только вы переместите эту функцию db.

Это разделение задач между контроллером и службой.

...