#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
?