Estoy trabajando en nodejs y estoy usando el marco "Express js", estoy trabajando en Controller y estoy tratando de obtener datos de "dos funciones de modelo" pero recibo el mensaje "anónimo", ¿Cómo puedo obtener datos de múltiples? funciones modelo", Aquí está mi código,
homeController.index = function (req, res, next) { // fetching data into 'data variable' from FetchRecords model homeModel.FetchRecords(function (err, data) { if (err) { req.flash('error', 'There was no records.'); } else { res.render('home/index', { data: data }); } }); homeModel.getAverage(function (average) { console.log(average); // res.render('home/index',{data:average}); }); }; homeModel.FetchRecords = function (data) { sql.query('SELECT * FROM rating', function (err, res) { if (err) { return data(err, null); } else { return data(null, res); } }); }; homeModel.getAverage = function (average) { console.log(average); sql.query('SELECT avg(value) FROM rating', function (err, res) { if (err) { return average(err, null); } else { return average(null, res); } }); };Dentro de homeModel solo crea 1 función en lugar de 2 por separado. Puede combinar ambas consultas MySQL en una como esta.
const FetchRecordsAndAverage = function (data) { sql.query('SELECT * FROM rating; SELECT avg(value) FROM rating', function (err, res) { if (err) { return data(err, null); } else { return data(null, res); } }); }; module.exports = { FetchRecordsAndAverage }Con esto, obtendrá datos combinados de ambas consultas como matrices dentro de la matriz. Se puede acceder al resultado de las consultas como datos[0] y datos[1].
Debe exportar la función desde el modelo de inicio:
const FetchRecords = function (data) { sql.query('SELECT * FROM rating', function (err, res) { if (err) { return data(err, null); } else { return data(null, res); } }); }; const getAverage = function (average) { console.log(average); sql.query('SELECT avg(value) FROM rating', function (err, res) { if (err) { return average(err, null); } else { return average(null, res); } }); }; module.exports = { FetchRecords, getAverage }Y recupéralas en tu aplicación llamando a:
const { FetchRecords, getAverage } = require('./path/to/home_model');