Попытка найти ближайший многоугольник точки и возврат ошибки: приведение к числу не выполнено для значения - PullRequest
0 голосов
/ 26 февраля 2020

Итак, я пытаюсь выполнить запрос $ 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);

...