我有一个包含以下已定义字段的架构:

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;
}

10-06 12:13