Узел - использование MongoDB для агрегата и geoNear - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь написать простое приложение для узлов, чтобы найти ближайших пользователей. Я использую Mon go 5.9.11 для агрегатной функции и $ geoNear, но, к сожалению, когда я пытаюсь запустить приложение и найти пользователей, я получаю пустой массив - даже сообщение об ошибке. Кто-нибудь может увидеть проблему здесь? Должен ли я по-разному использовать агрегацию или, возможно, определить схему по-другому? Пожалуйста, помогите Вот код:

router.get('/nearbyUsers', (req, res) => {
    User.aggregate([{
        $geoNear: {
            near: {type: 'point', coordinates: [parseFloat(req.query.lng), parseFloat(req.query.lat)]},
            distanceField: "dist.calculated",
            maxDistance: 100000,
            query: { type: 'public' },
            includeLocs: "dist.location",
            spherical: true
            }
        }
    ])
        .then(users=> res.send(users))
        .catch(err => res.send(err));
    console.log(req.query.lng, req.query.lat);
});

Также код для схемы:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const GeoSchema = new Schema({
    type: {
        type: String,
        default: "Point"
    },
    coordinates: {
        type: [Number],
        index: "2dsphere"
    }
});

const UserSchema = new Schema({
    name: {
        type: String,
        required: [true, 'Name field must be filled']
    },
    rank: {
        type: String
    },
    available: {
        type: Boolean,
        default: false
    },
    geometry: GeoSchema
});

const User= mongoose.model('user', UserSchema);

module.exports = User;
...