node.js - 响应输出未显示猫鼬模式 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 中的 demo 和 full。我希望得到这样的输出:
{
"metrics": {
"_id": "5e09c156b0ce8a4a54a3ecca",
"level": "schema"
"details": {
"demo": "2465",
"full": "1211234"
}
}
}
更新:我找到了一个解决方案,其中 Mongoose 模式分为两部分:
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
})
});
推荐阅读
- sqlite - 限制具有别名的列的结果
- sql - 为什么向 LIKE 添加第二个选项似乎撤消了我的 date = 功能?
- android - Android Room DAO 获得一个带有 crossRef 的字段
- google-apps-script - Google Apps 脚本在大约 30 秒内显示“超过最大执行时间”
- windows - Firefox 支持的拖放目标格式
- php - 如何通过访问其他表来获取所有被阻止的客户端来获取它
- javascript - 如何在赛普拉斯中获取具有动态选择器的元素
- roblox - 如何在 Roblox 中制作这些“提示”外观的东西?
- apache-spark - 如何在 spark sql (databricks) 中重用创建的列?
- google-apps-script - 在一张谷歌表格中组合四个脚本