JSON对象映射到mongoose schema _id

时间:2018-01-30 12:21:38

标签: json node.js mongodb express

如果以前曾被问过,请忽略;我的关键字搜索无法找到它。感谢是否有人可以提供一些提示。 学习猫鼬,节点js。我有像下面的JSON帖子

{
 "_id": "711015",  
 "is_in_violation": true, 
 "is_occupied": true,  
 "is_out_of_service": false, 
 "is_reserved": false
}

mongoose架构如下所示:

//Create schema and model SlotSchema
const dbSchema = new Schema({
_id:
{
    type: String ,
    required: [true, "Id is required"]
},
is_in_violation: Boolean,
is_occupied: Boolean,
is_out_of_service: Boolean,
is_reserved: Boolean
});

在我的nodejs应用程序中,我发布了如下功能:

router.post('/v1/', function (req, res, next)
{   
  var postdata = new SlotSchema(req.body);
  SlotSchema.create(req.body, function (err, postdata) {
    if (err) return next(err);
    res.json(postdata);
  });
});

所有这一切都很好。现在注意到数据POST将具有id而不是_id。如何将req.body id映射到我的moongose schema _id。 以下是JSON,它不起作用:

{
  "id": "711015",  
  "is_in_violation": true, 
 "is_occupied": true,  
 "is_out_of_service": false, 
 "is_reserved": false
}

感谢您的时间。干杯

1 个答案:

答案 0 :(得分:0)

这个链接给了我一些想法谢谢@saikat。以下是我现在最终解决的问题。

router.post('/v1/', function (req, res, next)
{
  console.log(req.body.id);
  req.body._id = req.body.id; 
  var postdata = new SlotSchema(req.body);
  console.log(postdata);
  SlotSchema.create(postdata, function (err, postdata) {
    if (err) return next(err);
    res.json(postdata);
  });
});

虽然这是我认为的手动映射。它似乎符合我的目的。我本来想看看,如果可以从传入的POST到我的架构进行自动映射。干杯