尝试将变量保存到 GeoJSON 点时出现 Mongoose CastError

Posted

技术标签:

【中文标题】尝试将变量保存到 GeoJSON 点时出现 Mongoose CastError【英文标题】:Mongoose CastError when trying to save variables to GeoJSON Point 【发布时间】: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 对象添加变量值是否缺少什么?

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于尝试将变量保存到 GeoJSON 点时出现 Mongoose CastError的主要内容,如果未能解决你的问题,请参考以下文章

尝试将用户电子邮件和姓名保存到 Firebase 数据库时出现异常

Java - 将缓冲图像保存到文件旋转 90 度时出现问题

尝试使用猫鼬和异步保存到数据库时出现多个错误

尝试在 Eclipse 中保存工作台的状态时出现问题

在 .bat 脚本中保存字符串变量时出现问题

由于 PySpark 时间戳,将 Spark 数据帧保存到 Azure Synapse 时出现问题