默认在 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;
}