Как использовать RESTful API в Node.js - PullRequest
1 голос
/ 16 марта 2020

Я новичок в Node.js и создаю простую страницу нумерации страниц. REST API работает нормально, но из-за его использования я оказался в подвешенном состоянии. Вот REST API (для краткости были взяты другие части)

const data = req.query.pageNo;
  const pageNo = 
    (typeof data === 'undefined' || data < 1) ? 1 : parseInt(req.query.pageNo);
  let query = {};
  const total = 10;
  query.skip = (total * pageNo) - total;
  query.limit = total;

  try {
    const totalCount = await Users.countDocuments();
    const pageTotal = Math.ceil(totalCount / total);
    const users = await Users.find({}, {}, query);

    return res.status(200).json(users);
  } catch (error) {
    console.log('Error ', error);
    return res.status(400).send(error)
  };
};

Когда я возвращаю json только с объектом 'users', например return res.status(200).json(users);, страница отображается правильно, но когда я передаю другие объекты, такие как то, что есть в коде, происходит сбой. Вот как я использую API:

const renderHomepage = (req, res, responseBody) => {
  let message = null;
  if (!(responseBody instanceof Array)) {
    message = 'API lookup error';
    responseBody = [];
  } else {
    if (!responseBody.length) {
      message = 'No users found nearby';
    }
  }

    res.render('users-list', {
      title: 'Home Page',
    users: responseBody,
    message: message
    });
}

const homelist = (req, res) => {
    const path = '/api/users';
    const requestOptions = {
        url: `${apiOptions.server}${path}`,
        method: 'GET',
        json: true,
  };

  request(
    requestOptions,
    (err, {statusCode}, body) => {
      if (err) {
        console.log('Ther was an error ', err);
      } else if (statusCode === 200 && body.length) {
        renderHomepage(req, res, body);
      } else if (statusCode !== 200 && !body.length) {
        console.log('error ',statusCode);
      }
    }
  );
}

Я много раз искал и здесь, и на других ресурсах, но ни одно из решений не отвечает на мой вопрос. Я надеюсь, что кто-то может помочь

...