我有两种模式,一种称为function setindex(nt::T,y,v::Val{var}) where {T,var}
if var ∉ fieldnames(T)
return nt
else
T(s == var ? y : w for (s,w) in pairs(nt))
end
end
,另一种称为function setindex(nt::T,y,v::Val{var}) where {T,var}
if var ∉ fieldnames(T)
return nt
else
T(k == var ? y : nt[k] for k in fieldnames(T))
end
end
。基本上,我希望路径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);
我得到一个错误:
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
});
});
});
所以我想这是我的post方法的问题,因为我的服务器无法正确识别该发布消息并等待其他消息。
我在这里做什么错了?
答案 0 :(得分:0)
path
中的 pathSchema
是对Position
文档的引用数组。这意味着在尝试为其分配对象数组时,path
必须存储ObjectId
的数组。您必须先保存Position
的值,然后再将其_id
的值压入path
数组:
router.post("/", (req,res,next)=>{
const savePositions = req.body.path.map(position => { // create promises that save Position documents
return new Position(position).save();
});
Promise.all(savePositions) // run all save promises in parallel
.then(positions => positions.map(position => position._id)) // get an array of ids of saved documents
.then(positionsIds => new Path({ path: positionsIds }).save())
.then(savedPath => {
// do the job with saved Path
})
.catch(err => {
// handle the error
});
});