Функция Module.exports ничего не возвращает Node.js

avatar
Nikhil Savaliya
8 апреля 2018 в 09:32
67
1
1

Я создал функцию module.exports,

const mongoose = require("mongoose");
const Loan = require("../models/loan_model");

function unpaidList() {
  Loan.aggregate([
    {
      $group: {
        _id: "$ePaidunpaid",
        data: { $push: "$$ROOT" },
        count: { $sum: 1 }
      }
    }
  ]).then(function(data){
    console.log(data) // i am getting data here
    return data;
  })
}

 module.exports = { unpaidList };

Вот как я вызываю функцию.

const unpaidListReq = require("../services/unpaidlist")
router.get("/", ensureAuthenticated,(req, res) => {
     let data = unpaidListReq.unpaidList()
     console.log(data)
      res.render("dashboard", {
        admin: req.user.eUserType,
        user: req.user,
      });
    })

Но взамен при утешении данных он возвращает undefined. Я смотрю на ранее заданный вопрос, но все еще получаю это.

Источник
ralphtheninja
8 апреля 2018 в 10:12
0

Вероятно, вам следует пройти курс базового javascript. Функция ничего не возвращает, поэтому она возвращает undefined.

Ответы (1)

avatar
ralphtheninja
8 апреля 2018 в 10:18
0

Получить unpaidList вернуть Promise вместо:

function unpaidList () {
  return Loan.aggregate([
    {
      $group: {
        _id: "$ePaidunpaid",
        data: { $push: "$$ROOT" },
        count: { $sum: 1 }
      }
    }
  ])
}

В вашем обработчике вы можете сделать:

unpaidListReq.unpaidList().then(function (data) {
  res.render("dashboard", {
    admin: req.user.eUserType,
    user: req.user
  })
})