У меня есть две схемы, одна называется position
другая называется path
. По сути, я хочу, чтобы путь schema
содержал массив position
схем.
Итак, во-первых, это моя position
схема:
const mongoose = require('mongoose');
var Schema = mongoose.Schema;
var positionSchema = new Schema({
position : {
x : Number,
y : Number
},
orientation : {
x : Number
}
});
var Position = mongoose.model('Position', positionSchema);
module.exports = Position
Простой, просто содержит некоторые числа с плавающей точкой. Тогда это моя path
схема, она как отец для position
схемы:
const mongoose = require('mongoose');
var Schema = mongoose.Schema;
var Position = require('./position');
var pathSchema = new Schema({
path : [{type: Schema.ObjectId, ref: 'Position'}]
});
module.exports = mongoose.model("Path", pathSchema);
Итак, теперь я хочу поместить некоторые массивы позиций в схему пути, используя Postman, и код для этого выглядит следующим образом:
router.post("/", (req,res,next)=>{
const _path = new Path({
path : req.body.path
})
.save()
.then(docs => {
const response = {
status: 201,
message: "Path has been added succesfully",
path_ID: docs.path_id,
path : docs.path
};
res.status(201).json(response);
})
.catch(err => {
res.status(500).json({
message: err
});
});
});
Но когда я использую этот пример в Почтальоне:
{"path" : [
{"position" : { "x": "1111", "y" : "2222"}, "orientation" : { "x":"0"} },
{"position" : { "x": "1111", "y" : "2222"}, "orientation" : { "x":"0"} }
]}
Я получаю ошибку:
{
"message": {
"errors": {
"path": {
"message": "Cast to Array failed for value \"[ { position: { x: '1111', y: '2222' }, orientation: { x: '0' } },\n { position: { x: '1111', y: '2222' }, orientation: { x: '0' } } ]\" at path \"path\"",
"name": "CastError",
"stringValue": "\"[ { position: { x: '1111', y: '2222' }, orientation: { x: '0' } },\n { position: { x: '1111', y: '2222' }, orientation: { x: '0' } } ]\"",
"kind": "Array",
"value": [
{
"position": {
"x": "1111",
"y": "2222"
},
"orientation": {
"x": "0"
}
},
{
"position": {
"x": "1111",
"y": "2222"
},
"orientation": {
"x": "0"
}
}
],
"path": "path",
"reason": {
"message": "Cast to ObjectId failed for value \"{ position: { x: '1111', y: '2222' }, orientation: { x: '0' } }\" at path \"path\"",
"name": "CastError",
"stringValue": "\"{ position: { x: '1111', y: '2222' }, orientation: { x: '0' } }\"",
"kind": "ObjectId",
"value": {
"position": {
"x": "1111",
"y": "2222"
},
"orientation": {
"x": "0"
}
},
"path": "path"
}
}
},
"_message": "Path validation failed",
"message": "Path validation failed: path: Cast to Array failed for value \"[ { position: { x: '1111', y: '2222' }, orientation: { x: '0' } },\n { position: { x: '1111', y: '2222' }, orientation: { x: '0' } } ]\" at path \"path\"",
"name": "ValidationError"
}
}
Так что я предполагаю, что это что-то с моим методом post, так как мой сервер не распознает сообщение должным образом и ожидает чего-то другого.
Что я здесь не так делаю?