Итак, я пытаюсь выполнить запрос $ near с mon goose, и это возвращает ошибку, которую я не могу отладить:
Я хочу найти ближайший мультиполигон точки
Может кто-нибудь помочь мне найти решение?
Возвращаемая ошибка:
(node:1968) DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes instead.
(node:1968) UnhandledPromiseRejectionWarning: CastError: Cast to number failed for value "{
val: -46.297337,
context: Query {
_mongooseOptions: {},
_transforms: [],
_hooks: Kareem { _pres: Map {}, _posts: Map {} },
_executionCount: 1,
(...)
Функция моего контроллера:
async show(req, res) {
const { lat, lng } = req.body;
const pdv = await Pdv.find({
coverageArea: {
$near: {
$geometry: {
type: 'Point',
coordinates: { lng, lat },
},
},
},
});
return res.json(pdv);
}
Моя схема:
import mongoose from 'mongoose';
const PdvSchema = new mongoose.Schema(
{
coverageArea: {
type: {
type: String,
enum: ['MultiPolygon'],
required: true,
},
coordinates: {
type: [[[[Number]]]],
required: true,
},
},
address: {
type: {
type: String,
enum: ['Point'],
required: true,
},
coordinates: {
type: [Number],
required: true,
},
},
},
{
timestamps: true,
}
);
PdvSchema.index({ address: '2dsphere' });
PdvSchema.index({ coverageArea: '2dsphere' });
export default mongoose.model('Pdv', PdvSchema);