我正在尝试将新用户添加到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']}“位于路径“ current_user_location”
这是请求正文的图片: Postman addUser Request Body
但是,当我将路线中的“ coordinates”值更改为静态坐标(其后的注释为[12.123456,13.134578])并使用邮递员测试路线时,我得到了一个“确定”和新的用户已添加到数据库。
在请求实体内部向GeoJSON对象添加变量值时,我是否缺少某些东西?
答案 0 :(得分:0)
事实证明,我输入键入的坐标还不够用。模式将它们作为字符串接收并给出错误。这是解决有问题的代码行的方法:
coordinates: [parseFloat(data.longitude), parseFloat(data.latitude)]
您必须将它们解析为一个浮点数(尤其是与GeoJSON数据有关,因为WGS84规范说坐标扩展了5个小数位)