Я использую 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]
Что мне не хватает? Заранее благодарю за ответы!