我有一个包含以下已定义字段的架构:
range: {type: Number, default: 100000, min: 1},
在 Controller 中,我设置范围并保存:
function postPlacard(req, res) {
// Create a new instance of the Placard model
var placard = new Placard();
...
placard.range = req.body.range;
...
placard.save(function(err) {
if (err)
res.send(err);
res.json({ message: 'Placard added!', data: placard });
});
}
如果我提交表单中没有范围的POST,就会出现问题。在这种情况下,不会将范围字段保存到文档中。显然,这意味着该范围小于其最小值1。
我希望该范围在保存之前是不确定的,然后在保存期间应应用默认值。
是什么原因导致该范围从保存的文档中丢失,我该如何纠正呢?
谢谢
最佳答案
您遇到此错误是因为即使缺少placard.range
字段也要分配给req.body.range
。这将覆盖range
中设置的默认new Placard()
值。
确定您的作业,以便仅在使用以下方式显示该字段时才进行作业:
if (req.body.range !== undefined) {
placard.range = req.body.range;
}