soy muy nuevo en node.js, javascript, etc. así que no tengo experiencia. Tengo un problema al intentar obtener un valor de retorno de una función auxiliar en mi controlador. La función auxiliar tiene la intención de obtener un valor de una base de datos mongodb y devolverlo al controlador principal. Pero cuando llamo a la función auxiliar, obtengo un resultado indefinido. Puse un archivo console.log dentro de la función auxiliar y los datos de la base de datos se recuperan correctamente. Por favor ayuda. Este es mi código de controlador.
var validator = require("validator"); var Necesidad = require("../models/necesidad"); var NecesidadCategoria = require("../models/necesidad_categoria"); var helpers = require("../controllers/helpers/index.js"); const necesidad_categoria = require("../models/necesidad_categoria"); var controller = { new: (req, res) => { var params = req.body; try { var validateNombre = !validator.isEmpty(params.nombre); var validateCantidad = params.cantidad >= 0; if (validateNombre && validateCantidad) { var necesidad = new Necesidad(); necesidad.nece_nombre = params.nombre; necesidad.nece_cantidad = params.cantidad; necesidad.nece_estado = 0; necesidad.nece_imagen = ""; var args = { cat_nombre: params.cat_nombre }; var categoria = helpers.getNecesidadCategoria(args); console.log("categoria: " + categoria); necesidad.save((err, necesidadStored) => { if (err || !necesidadStored) { return res.status(404).send({ status: "error", message: "Los datos no fueron guardados: " + err, }); } return res.status(200).send({ status: "success", necesidad: necesidadStored, }); }); } else { return res.status(200).send({ status: "error", message: "Error de validación de datos.", }); } } catch (err) { return res.status(200).send({ status: "error", message: "Error de validación de datos. Traza completa: " + err, }); } }, }; module.exports = controller;Y esta es mi función auxiliar:
var validator = require("validator"); var NecesidadCategoria = require("/ProyectosAngular/SeminarioFinalBackend/models/necesidad_categoria"); module.exports = { getNecesidadCategoria: function (args) { var nombre = args.cat_nombre; var nombreValidation = !validator.isEmpty(nombre); if (nombreValidation) { NecesidadCategoria.findOne( { cat_nombre: nombre }, function (err, necesidad_categoria) { if (err || !necesidad_categoria) { return null; } else { console.log("categoria function:" + necesidad_categoria); return necesidad_categoria; } } ); } }, };