Я пытаюсь найти некоторые записи в моей базе данных mongoDB на основе значений сохраненной информации о широте и долготе.Я хочу применить следующую функцию с находкой в моей коллекции:
exports.findDistance = findDistance(latitude, longitude) {
console.log('calculating with lat = ' + latitude + ' and longitude = ' + longitude);
var radian = 0.0174532925;
var x = Math.pow(Math.sin((latitude - this.latitude) * radian / 2), 2);
var y = Math.cos(latitude - radian) * Math.cos(this.latitude - radian);
var z = Math.pow(Math.sin((longitude - this.longitude) * radian/2), 2);
var result = 2*3956*Math.asin(Math.sqrt(x + y * z));
return result < 10;
}
Эта функция возвращает true, если мой вычисленный результат меньше 10 (я использую информацию о широте и долготе из моей базы данных, на которую ссылается 'thisобъект, и два параметра).Как я могу получить все сообщения от mongoDB, которые относятся к этой функции?
Я попробовал следующее:
exports.index = function(req, res) {
var latitude = value1;
var longitude = value2;
Message.find(Message.findDistance, [], function(err, msgs) {
// render the page
});
}
Однако моя функция findDistance, похоже, не вызывается mongooseфункция поиска (на моей консоли разработчика не видно результатов, и я просто получаю все результаты, возвращенные из моей коллекции mongoDB).Кроме того, как я могу передать параметры широты и долготы в функцию findDistance?
Моя схема сообщений выглядит следующим образом:
Message = new Schema({
text: { type: String, required: true },
parent: String,
user: ObjectId,
latitude: Number,
longitude: Number,
date: { type: Date, default: Date.now }
});
Может ли кто-нибудь мне помочь?:)