地理空間配列をスキーマに保存しようとしています。これが私のスキーマです(私はMoongose + Express + NodeJSを使用しています):
var Route = new schema({
route: String,
time: Number,
distance: Number,
geo: {type: [Number], index: '2d'},
created: { type: Date, default: Date.now }
}, {collection: 'route'});
var routeModel = mongoose.model('Route', Route);
そして、そのスキーマのインスタンスにデータを取り込むために送信するデータの例を次に示します。
{
distance: 6.899893863658173,
geo:[ [13.695901, -89.24937], [13.706500876975248, -89.24967010761316],
[13.711430396814366, -89.2561502488519] ],
route: "Running route",
time: 31
}
最初の初心者の質問は:私がしていることをすることは可能ですか?geoで配列の配列を送信しますか?
そして、これが私がデータを保存する方法です:
socket.on('new_route', function (data){
var route = new routeModel();
route.route = data.route;
route.time = data.time;
route.distance = data.distance;
route.geo = data.geo;
route.save(function(err) {
if (err) throw err;
socket.emit("route_saved", {mensaje: "Well done!"});
app.listen(8080);
});
});
geoで配列を送信して空にすると、すべて正常に機能します。ただし、次のエラーが発生します
"Cast to number failed for "13.695901, -89.24937, 13.706500876975248, -89.24967010761316..." at path "geo".
「geo」で配列(上記のような)を送信するときはいつでも。
では、2番目の質問ですが、アレイが大きな文字列のように脅かされている理由について何か考えはありますか?