Мангуст: «Не удается прочитать свойство ‘forEach’ неопределенного»

#javascript #node.js #mongodb #mongoose

#javascript #node.js #mongodb #мангуст

Вопрос:

Я пытаюсь выполнить простой поиск в Mongoose, получая всех пользователей в пределах заданного радиуса запрашивающего пользователя. Другими словами, пользователь входит в систему, и я хочу получить всех пользователей в радиусе 20 миль, не включая запрашивающего пользователя.

Я получаю странную ошибку: "Cannot read property 'forEach' of undefined" когда я даже не использую forEach . Что еще более странно, запрос состоит из двух частей: _id и loc , и когда я выполняю каждую из них по отдельности, они работают, но не вместе.

Мой код ниже, кто-нибудь может помочь мне понять, что происходит?

 app.post("/get_users", (req, res) => {
  console.log("get users"); // 
  console.log("req.body :", req.body);
  const miles = 20;
  const meters = Math.floor(miles * 1609.34);
  const loc = req.body.loc;
  const userId = req.body.userId;
  
  User.find({ loc: {
     $near: {
       $geometry: {
          type: "Point" ,
          coordinates: loc
       },
       $maxDistance: meters,
       $minDistance: 0
     }
   },
   _id: { $ne: mongoose.Types.ObjectId(userId) }
  })
  .then((users) => {
    console.log("users : ", users); // <- not being written to console
    return res.json({ users })
  })
  .catch((err) => {
    console.log("Err  : ", err);
    return res.json({ error: "error" });
  });
});
  

Комментарии:

1. Не совсем уверен, но это должно быть app.get вместо post. Вы также можете проверить номер строки в свойстве ‘forEach’ с ошибкой ‘undefined’.

2. Геометрия ожидает массив из 2 элементов для coordinates: , какой тип данных req.body.loc ?