Mon goose Geo JSON выдает «MongoError: Невозможно извлечь гео-ключи» при использовании промежуточного ПО - PullRequest
0 голосов
/ 17 апреля 2020

Я использую Mon goose в своем проекте NodeJS, и у меня есть объект Geo JSON в массиве вложенных документов:

ParentSchema. js

import mongoose from 'mongoose';
import ChildeSchema from '[path]/ChildSchema.js';

const ParentSchema = mongoose.Schema({
  ...
  children: [ChildSchema],
  ...
});

ChildSchema. js

import mongoose from 'mongoose';
import geocoder from '[path]/geocoder.js'; // where I initialize the geocoder

const ChildSchema = mongoose.Schema({
  ...
  location: {    
    // GeoJSON
    type: {
      type: String,
      enum: ['Point'],
      default: 'Point'
    },
    // first enter longitude, then latitude
    coordinates: {
      type: [Number]
    //index: '2dsphere'  <-- committed out, also tried with the index
    }
  },
  ...
});

// middleware goes here

export default ChildSchema;

Я добавил промежуточное ПО в ChildSchema, которое получает информацию о местоположении, используя geocoder, которое работает с mapquest .

Промежуточное программное обеспечение (в ChildSchema. js):

ChildScheme.pre('save', async function (next) {

  const geoDetails = await geocoder.geocode(this.fullAddress); // works fine, I'm getting the location

  // values are legal
  const latitude = geoDetails[0].latitude;
  const longitude = geoDetails[0].longitude;

  this.location = {
      type: 'Point',
      coordinates: [longitude, latitude] 
    };

  next();
}

Когда я пытаюсь создать новый родительский документ (используя POST с приложением / json Content-Type) Я получаю следующую ошибку:

MongoError: Невозможно извлечь географические ключи: {the_parent_document} элемент гео должен быть массивом или object: type: \ "Point \"

Я пытался применить ответы, которые нашел в следующих вопросах, но это не помогло:
mon goose geo json в схеме ошибка «Не удается извлечь географические ключи»
MongoError: Невозможно извлечь географические ключи
Пн goose Схема для географических Json координат
Как сделать один представляет поля Geo JSON MongoDB в схеме Mon goose?
Не удается извлечь ключи гео, неизвестный тип Geo JSON: {координаты: [13.42493130000003, 52.50074619999999]

Что мне не хватает? Заранее благодарю за ответы!

1 Ответ

0 голосов
/ 24 апреля 2020

Изменил имя ключа на что-то другое, чем location, и это сработало ...

...