Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

177
Visualizações
¿Cómo resolver los datos de respuesta de error de referencia no están definidos en el proyecto MEAN stack api?

Estoy tratando de crear una API con pila media, pero cuando pruebo el punto final con una solicitud de obtención mediante cartero, aparece el siguiente error:

 ReferenceError: studentData is not defined at module.exports.StudentsGetAll (F:\MEAN\api\controllers\students.controllers.js:13:11) at Layer.handle [as handle_request] (F:\MEAN\node_modules\express\lib\router\layer.js:95:5) at next (F:\MEAN\node_modules\express\lib\router\route.js:137:13) at Route.dispatch (F:\MEAN\node_modules\express\lib\router\route.js:112:3) at Layer.handle [as handle_request] (F:\MEAN\node_modules\express\lib\router\layer.js:95:5) at F:\MEAN\node_modules\express\lib\router\index.js:281:22 at Function.process_params (F:\MEAN\node_modules\express\lib\router\index.js:335:12) at next (F:\MEAN\node_modules\express\lib\router\index.js:275:10) at Function.handle (F:\MEAN\node_modules\express\lib\router\index.js:174:3) at router (F:\MEAN\node_modules\express\lib\router\index.js:47:12)

Sin embargo, si envía una segunda solicitud de obtención, la respuesta de studentData se devuelve como la quiero. ¿Qué estoy haciendo mal?

Estudiantes.controladores.js

 var dbconn = require('../data/dbconnection.js'); module.exports.StudentsGetAll = function( req, res) { dbconn.open(); console.log('GET the Students'); res .status(200) .json(studentData); };

conexióndb.js

 var sql = require('mssql'); var query = require('./queries.js'); var dburl = 'mssql://*****:****@**.**.*.**/******/*******'; function open() { var conn = new sql.Connection(dburl); var req = new sql.Request(conn); conn.connect(function (err) { if (err) { console.log(err); return; } console.log("Database Connection established"); req.query(query.getAllQuery, function (err, recordset) { if (err) { console.log(err); } else { studentData = recordset; } }); }); } module.exports = { open : open };

¿Cómo se pueden definir los datos de respuesta antes de que realmente existan? Estoy confundido, ¿alguien puede explicar dónde me estoy equivocando, por favor?

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Durante el primer intento, su código responderá antes de que se establezca la conexión con la base de datos. La segunda vez funcionaría mejor porque la conexión db ya se estableció después del primer intento.

Una conexión a la base de datos bloqueará la E/S. Lo que significa que debe implementar una función de devolución de llamada que se realizará después de que se realice la conexión y luego responder con los datos recuperados.

Volvería a escribir los Students.controllers a lo siguiente:

 // Students.controllers.js var dbconn = require('../data/dbconnection.js'); module.exports.StudentsGetAll = function( req, res) { var getStudentData = function(studentData){ res .status(200) .json(studentData); }; dbconn.open(getStudentData); console.log('Getting Students Records'); } //Dbconnection.js var sql = require('mssql'); var query = require('./queries.js'); var dburl = 'mssql://*****:****@**.**.*.**/******/*******'; function open(callback) { var conn = new sql.Connection(dburl); var req = new sql.Request(conn); conn.connect(function (err) { if (err) { console.log(err); callback({error: err}); // Respond back with error return; } console.log("Database Connection established"); req.query(query.getAllQuery, function (err, recordset) { if (err) { console.log(err); callback({error: err}); // Respond back with error } else { // Added Callback callback(recordset); // Respond back with data set } }); }); } module.exports = { open : open };
about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda