Mongoose CastError при попытке сохранить переменные в GeoJSON Point - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь добавить новых пользователей в базу данных Mongo, включая их местоположение в виде объекта GeoJSON.Я использую этот пакет для предопределения объекта Point для пользовательской схемы: https://www.npmjs.com/package/mongoose-geojson-schema

В частности, схема выглядит следующим образом:

UserSchema = mongoose.Schema(
    {
        first_name:String,
        last_name:String,
        username:String,
        avatar:String, //string to image location in server / public
        current_user_location: mongoose.Schema.Types.Point
    },
    { collection: 'users' });

var User = mongoose.model('User', UserSchema);

Тогда мой маршрут выглядит следующим образом:

var express = require('express');
var router = express.Router();
var User = require('../models/user');
router.post('/addUser', function (req, res) {
        var data = req.body;
        new User({
          first_name:data.first_name,
          last_name:data.last_name,
          username:data.user_name,
          avatar:data.avatar_link, //string to image location in server / public
          current_user_location: {
            type: "Point",
            coordinates: [data.longitude, data.latitude] //[12.123456, 13.134578]
          }
        }).save(function (err) {
            if (err) {
                  console.log(err);
                }
            } else {
                console.log("done");
            }
     });

Затем, когда я использую Почтальон для отправки тела запроса, он возвращает ошибку

Ошибка приведения к точке для значения "{тип: 'Точка', координаты: ['12 .123456', '13 .134578']} "at path" current_user_location "

Вот изображение тела запроса: Тело запроса addUser почтальона

Но , когда я изменяю значение «координаты» в маршруте на статические координаты (комментарий после него [12.123456, 13.134578]) и проверяю маршрут с помощью Почтальона, я получаю ОК, и новый пользователь добавляется в базу данных.

Есть ли что-то, чего мне не хватает при добавлении значений переменных к объектам GeoJSON внутри тел запросов?

1 Ответ

0 голосов
/ 07 декабря 2018

Оказывается, мне не хватило сил набирать переданные координаты.Схема получала их как строки и выдавала ошибку.Вот как исправить ошибочную строку кода:

coordinates: [parseFloat(data.longitude), parseFloat(data.latitude)]

Вы должны проанализировать их с плавающей точкой (особенно с данными GeoJSON, потому что спецификация WGS84 гласит, что координаты расширяются на 5 десятичных знаков)

...