小编use*_*025的帖子

Mongoose查询缺少(或未定义)字段的位置

我有一个问题,我有一个凌乱的MongoDB数据库与修订的Mongoose方案.

我希望能够使用该where命令进行查询,但如果该字段丢失或undefined在任何找到的记录中,则Mongoose会返回错误.

例如:

  return this.find({personID: req.user._id})
  .where('rangeBefore').lt(time);
Run Code Online (Sandbox Code Playgroud)

这会返回错误,因为某些记录没有rangeBefore.

我想要实现的是没有rangeBefore字段的任何记录被过滤掉(即它没有通过where测试).

我试过exists像这样的前缀:

  return this.find({personID: req.user._id})
  .exists('rangeBefore').where('rangeBefore').lt(time);
Run Code Online (Sandbox Code Playgroud)

但我仍然得到一个错误.

任何人都可以建议一种方法来忽略带undefined字段的记录,而不是返回错误?

mongoose mongodb node.js

6
推荐指数
1
解决办法
1万
查看次数

默认不在mongoose中工作保存 - 不保存字段

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

range: {type: Number, default: 100000, min: 1},
Run Code Online (Sandbox Code Playgroud)

在控制器中我设置范围并保存:

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 });
  });
}
Run Code Online (Sandbox Code Playgroud)

如果我在表单中提交没有范围的POST,则会出现问题.在这种情况下,没有范围字段保存到文档中.这显然意味着范围小于其最小值1.

我希望在保存之前未定义范围,然后在保存期间应该应用默认值.

发生了什么导致保存文档中缺少范围,我该如何纠正?

谢谢

mongoose mongodb node.js

3
推荐指数
1
解决办法
1484
查看次数

标签 统计

mongodb ×2

mongoose ×2

node.js ×2