Перебрать набор результатов в узле JS - PullRequest
1 голос
/ 16 мая 2019

У меня есть запрос, который возвращает массив результатов в контроллере узла.Теперь я хочу перебрать результат и мне нужно вызывать разные функции для каждого набора результатов.Как мне добиться этого в узле.

Я - новая пчела в узле и не могу найти решение ..

Ниже приведен мой файл маршрутизатора:

/*jslint node:true*/
var express = require('express');
var session = require('express-session');
var router = express.Router();
var bodyParser = require('body-parser');
const mgrDataCtrl = require('../controllers/mgrDataCtrl');
router.use(session());

// Use body parser to parse JSON body
router.use(bodyParser.json());

// Http Method: GET
router.route('/mgrData/').get(mgrDataCtrl.getMgrData);

module.exports = router;

Ниже мой контроллер:

/*jslint node:true*/
var express = require('express');
var router = express.Router();
var bodyParser = require('body-parser');
const database = require('../services/database.js');
// Import events module
var events = require('events');

// Use body parser to parse JSON body
router.use(bodyParser.json());

//Function to get Manager data from youCoach DB
async function getMgrData(req,res,next){

    try{
        /*Get total items*/
        const presult = await database.simpleExecute(`SELECT a.username, a.id, a.email, a.dept_id, b.deptno, b.dept_name from emp a LEFT JOIN dept b ON a.dept_id = b.id`);
        const prows = presult.rows;
        console.log("Rows ="+prows);
        res.json(prows);

        **// Here I want to write a for loop for above result and call a different function for each row.**         

    } catch (err) {
        console.log("Error ===="+err);
        next(err);
    }

};
module.exports.getMgrData = getMgrData;

Заранее спасибо.

1 Ответ

2 голосов
/ 17 мая 2019

Вы можете использовать async js для зацикливания и управления выполнением кода.для цикла обработки данных вы можете использовать async.eachOf из async.js, который очень легко реализовать.и внутри цикла вы можете написать свою бизнес-логику на основе вашего результата.

Вот ссылка на документ: https://caolan.github.io/async/docs.html#eachOf

Проверьте приведенный ниже код реализации async.eachOf Надеюсь, это поможет вам.

    /*jslint node:true*/
    var express = require('express');
    var router = express.Router();
    var bodyParser = require('body-parser');
    const database = require('../services/database.js');
    // Import events module
    var events = require('events');
    var async = require("async");

    // Use body parser to parse JSON body
    router.use(bodyParser.json());

    //Function to get Manager data from youCoach DB
    async function getMgrData(req,res,next){
        try{
            /*Get total items*/
            const presult = await database.simpleExecute(`SELECT a.username, a.id, a.email, a.dept_id, b.deptno, b.dept_name from emp a LEFT JOIN dept b ON a.dept_id = b.id`);
            const prows = presult.rows;
            let finalResult = [];
            async.eachOf(prows, function(prow, key, eachCallBack) {
                finalResult[key] = // output;
                eachCallBack();
            }, function(err, result){
                if(err) {
                    console.log("Error ===="+err);
                    next(err);
                } else {
                    res.json(finalResult);
                }
            })
        } catch (err) {
            console.log("Error ===="+err);
            next(err);
        }
    };
    module.exports.getMgrData = getMgrData;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...