Как вернуть более двух значений из сервиса в контроллер в узле JS - PullRequest
0 голосов
/ 16 мая 2019

У меня есть файл controller / user.js для получения данных с использованием функции из service / user.js
Из функции getUsers в сервисе я не могу вернуть более 1 значения.например я хочу вернуть return{User,pages}.Но я получаю ошибку при возврате, как return{User,pages}
Ниже приведена ошибка, которую я получаю при использовании return{User,pages}

userService.getUsers (...). Тогда это не функция

контроллер / user.js

function getUsers(req, res){
    userService.getUsers({
         page_no:req.body.page_no,
         previous:req.body.previous
    }  
    )
    .then(data => res.send(data));
};

service / user.js

const getUsers = function (data) { 
    let limit = 10;   // number of records per page
    let offset = 0;
    let page = data.page_no;      // page number
     data = Users.findAll({where: {
        DeletedAt: {
          $eq: null
        }
    }})
    const pages = Math.ceil(data.count / limit);
        offset = limit * (page - 1);
    const User =  Users.findAll({
        attributes: ['id', 'first_name', 'last_name', 'role_id','login','is_active'],
        limit: limit,
        order: [
                ['createdAt', 'DESC']
            ],
        offset: offset,
        $sort: { id: 1 },
        where: {
            DeletedAt: {
              $eq: null
            }
        }
    })
    return User
    };

1 Ответ

1 голос
/ 16 мая 2019

Похоже, вы используете ORM, который возвращает Promise.

Когда вы возвращаете только User, тип User является (вероятно, так как вы не получите ошибку) Promise, поэтому функция вернет обещание, и вы можете вызвать .then метод.

Однако, когда вы возвращаете { User, pages }, вы не возвращаете обещание, а Object, и у объектов нет then метода, поэтому вы получаете ошибку.

Когда вы возвращаете объект { User, pages }, вы можете изменить свой код для извлечения обещания и затем вызвать метод:

function getUsers(req, res){
  const { User, pages } = userService.getUsers({
    page_no:req.body.page_no,
    previous:req.body.previous
  })
  // Call the then User which is a Promise
  User.then(data => res.send(data))
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...