默认在 mongoose 保存中不起作用 - 字段未保存
Default not working in mongoose save - field is not saved
我有一个包含以下定义字段的架构:
range: {type: Number, default: 100000, min: 1},
在控制器中我设置范围并保存:
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。
我希望范围在保存之前是未定义的,然后在保存期间应该应用默认值。
是什么原因导致保存的文档中缺少范围,我该如何更正它?
谢谢
您遇到此错误是因为即使缺少 req.body.range
字段,您仍在分配给 placard.range
。这将覆盖 new Placard()
中设置的默认 range
值。
限定您的分配,以便只有在该字段存在时才会发生,使用如下内容:
if (req.body.range !== undefined) {
placard.range = req.body.range;
}
我有一个包含以下定义字段的架构:
range: {type: Number, default: 100000, min: 1},
在控制器中我设置范围并保存:
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。
我希望范围在保存之前是未定义的,然后在保存期间应该应用默认值。
是什么原因导致保存的文档中缺少范围,我该如何更正它?
谢谢
您遇到此错误是因为即使缺少 req.body.range
字段,您仍在分配给 placard.range
。这将覆盖 new Placard()
中设置的默认 range
值。
限定您的分配,以便只有在该字段存在时才会发生,使用如下内容:
if (req.body.range !== undefined) {
placard.range = req.body.range;
}