Пн goose дает ошибку для НЕ необходимого географического поля - PullRequest
1 голос
/ 09 апреля 2020

Я использую Mongoose Schema, и упрощенная версия выглядит следующим образом:

const newSchema = new mongoose.Schema({
  name:{
    type: String,
    required: true
  },
  location:{
    type: {
      type: String,
      default: 'Point',
      enum: ['Point']
    },
    coordinates: [Number],
  }
});

const newModel = mongoose.model('NewModel', newSchema);

Когда я пытаюсь сохранить новый документ, используя эту схему:

newModel.create({
  "name": "Default name"
});

Это дает

error: 
"Can't extract geo keys: { _id: ObjectId('5e8ed5ddf4781c24d0836b6e'), location: { type: \"Point\" },
 name:\"Default name\"} Point must be an array or object"

Однако, когда я заполняю поле местоположения, оно работает хорошо. Мне интересно, почему схема проверяет наличие НЕ обязательного поля.

1 Ответ

0 голосов
/ 09 апреля 2020
var GeoJSON = require('mongoose-geojson-schema');
var mongoose = require('mongoose');
const newSchema = new mongoose.Schema({
  name:{
    type: String,
    required: true
  },
  location:mongoose.Schema.Types.GeoJSON
});

const newModel = mongoose.model('NewModel', newSchema);

и создайте данные, такие как:

newModel.create({
  name: "Default name",
   location: {
          type: "Point",
          coordinates: [longitude, latitude]
        }
});

на самом деле проблема возникает из-за того, что вы указали тип по умолчанию - Точка (который выдвигается mon goose всегда, если ноль или не указан), но вы не прошли соответствующие координаты, и точка должна быть с координатой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...