响应输出未显示猫鼬模式 nodejs 中存在的完整信息



我设计了一个像这样的猫鼬模式:

const metricsSchema = mongoose.Schema({
_id : mongoose.Schema.Types.ObjectId,
level : String,
details: {
demo: String,
full: String
}   
});

另外,我已经这样处理了响应:

router.post('/',(req, res, next)=>{
const metrics = new Metrics({
_id : new mongoose.Types.ObjectId(),
level : req.body.level,
details:{
demo: req.body.demo,
full: req.body.full
} 
});
res.status(201).json({
metrics: metrics
})
});

但是,当我使用Postman发布这样的JSON数据时:

{
"level" :"schema" ,
"details":{
"demo" : "2465",
"full" : "1211234"
} 
}

我得到这样的输出:

{
"metrics": {
"_id": "5e09c156b0ce8a4a54a3ecca",
"level": "schema"
}
}

我没有得到其余的输出:演示和完整的响应 json。我希望得到这样的输出:

{
"metrics": {
"_id": "5e09c156b0ce8a4a54a3ecca",
"level": "schema"
"details": {
"demo": "2465",
"full": "1211234"
} 
}
}

更新:我找到了一个解决方案,其中猫鼬模式分为两部分:

const detailsSchema = mongoose.Schema({
_id : mongoose.Schema.Types.ObjectId,
demo: String,
full: String
});
mongoose.model('Details',detailsSchema );
const metricsSchema = mongoose.Schema({
_id : mongoose.Schema.Types.ObjectId,
level : String,
details: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Details'
} 
});

但是,这并没有奏效。

您必须更改代码,如下所示:

router.post('/',(req, res, next)=>{
const metrics = new Metrics({
_id : new mongoose.Types.ObjectId(),
level : req.body.level,
details:{
demo: req.body.details.demo,   <----- see the change here
full: req.body.details.full
} 
});
res.status(201).json({
metrics: metrics
})
});

相关内容

最新更新