Передача аргумента вложенному запросу mongoose - PullRequest
0 голосов
/ 02 ноября 2018

Я не понимаю, почему у меня 504 тайм-аута шлюза.

app.get("/api/exercise/log", function(req,res) {
  let userId = req.query.userId;
  let from = req.query.from;
  let to = req.query.to;
  let limit = req.query.limit;
  console.log("limit1 " + limit);
  User.findById(userId).exec(function (err,data) {
    console.log("limit2 " + limit);
    if (err) return err;
    Exercise.find({userId: userId}).limit(limit).exec(function (err2,data2) {
      console.log("limit3 " + limit);
      if (err2) return err2;
      let logArr = [];
      logArr.push(data2);
      let total = logArr[0].length;
      let answer = Object.assign({}, data._doc, {log: logArr}, {total: total});  
      res.json(answer);
    })    
  })  
})

Мой URL заканчивается логом? UserId = 555 & limit = 2. Все журналы консоли (limit1, limit2, limit3) выводят «2», как и положено, однако я не получаю никаких результатов, только тайм-ауты. Если я изменю эту строку, чтобы ввести предел вручную, например

Exercise.find({userId: userId}).limit(2).exec(function (err2,data2) {

все работает, и я получаю правильное количество результатов. О чем это все?

1 Ответ

0 голосов
/ 02 ноября 2018

Измените ограничение на число с помощью parseInt и проверьте, можно ли преобразовать значение в число.

app.get("/api/exercise/log", function(req,res) {
  let userId = req.query.userId;
  let from = req.query.from;
  let to = req.query.to;
  let limit = 10;
  if(!isNaN(req.query.limit)){
      limit = parseInt(req.query.limit);   // use limit from query params if it is a valid number
  }
  console.log("limit1 " + limit);
  User.findById(userId).exec(function (err,data) {
    console.log("limit2 " + limit);
    if (err) return err;
    Exercise.find({userId: userId}).limit(limit).exec(function (err2,data2) {
      console.log("limit3 " + limit);
      if (err2) return err2;
      let logArr = [];
      logArr.push(data2);
      let total = logArr[0].length;
      let answer = Object.assign({}, data._doc, {log: logArr}, {total: total});  
      res.json(answer);
    })    
  })  
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...