【问题标题】:Mongoose CastError when trying to save variables to GeoJSON Point尝试将变量保存到 GeoJSON 点时出现 Mongoose CastError
【发布时间】:2019-05-08 15:56:19
【问题描述】:

我正在尝试将新用户添加到 Mongo 数据库,包括他们的位置作为 GeoJSON 对象。我正在使用这个包为用户模式预定义一个点对象: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");
            }
     });

然后,当我使用 Postman 发送请求正文时,它会返回错误

值“{类型:'点',坐标: ['12.123456', '13.134578' ] }" 在路径“current_user_location”

这是请求正文的图片: Postman addUser Request Body

但是当我将路线中的“坐标”值更改为静态坐标(后面的注释,[12.123456, 13.134578])并使用 Postman 测试路线时,我得到了 OK 和新的用户已添加到数据库中。

向请求主体内的 GeoJSON 对象添加变量值是否缺少什么?

【问题讨论】:

    标签: node.js mongodb mongoose geojson mongoose-schema


    【解决方案1】:

    事实证明,我输入传递的坐标的力度不够。 Schema 将它们作为字符串接收并给出错误。以下是如何修复有问题的代码行:

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

    您必须将它们解析为浮点数(尤其是使用 GeoJSON 数据,因为 WGS84 规范说坐标扩展了 5 个小数位)

    【讨论】:

      猜你喜欢
      • 2011-11-23
      • 2020-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多