当前位置: 首页 > 知识库问答 >
问题:

mongoose中的最大数量验证

苍兴怀
2023-03-14

我会尽力描述我的问题。

我用Mongoose创建了一个模式,试图将最大值设置为如下所示:

const mongoose = require("mongoose");

const inventorySchema = new mongoose.Schema({
    userID: { type: String, require: true, unique: true},
    mana: { type: Number, default: 0, max: 100,min: 0},
    pickaxe: { type: Number, default: 0},
    sword: { type: Number, default: 0 },
    stone: { type: Number, default: 0},
    iron: { type: Number, default: 0},
    gold: { type: Number, default: 0},
});

const model = mongoose.model("InventoryModels", inventorySchema);

module.exports = model;

我想做的第二件事是每60秒增加1到我的“法力值”变量,代码如下:

const manaAdd = async () => await inventoryModel.updateMany({},
    {
        $inc: {
            mana: 1
        }
    }
);
setInterval(manaAdd, 30000);

但无论如何我的法力变数最终超过了100...如果你能帮忙,我将不胜感激

Zartax0O3

共有1个答案

朱博实
2023-03-14

来自Mongoose文档

在上面的示例中,您了解了文档验证。Mongoose还支持对update()、updateOne()、updateMany()和findOneAndUpdate()操作的验证。默认情况下Update validators是关闭的-您需要指定runValidators选项。

所以您必须像前面的代码一样将runValidater设置为true

const opts = { runValidators: true };
Toy.updateOne({}, { color: 'not a color' }, opts, function(err) {
  assert.equal(err.errors.color.message,
    'Invalid color');
});
 类似资料:
  • 问题内容: 如何在Mongoose查询中获得最大值。在SQL中很容易 我想在Mongoose(node.js)中等效上述SQL代码 问题答案: MongoDB支持最大/最小,但他们不建议在实际应用中使用它: min和max主要用于支持mongos(分片)过程。 http://www.mongodb.org/display/DOCS/min+and+max+Query+Specifiers 您几乎可

  • 问题内容: 我最近一直在复制和移动大量文件(约40万个)。我知道在Bash命令行上可以扩展的参数数量有限制,因此我一直在使用xargs来限制产生的数量。 出于好奇,我想知道我可以使用的最大参数数目是多少,我发现这篇文章说它是依赖于系统的,我可以运行以下命令来找出: 令我惊讶的是,我回来的答案是: 刚刚超过 260万 。正如我所说,我要处理的文件数量要少得多,大约为40万。我绝对需要使用移动和复制这

  • 问题内容: 我在表中有三列:id,街道名称,计数。对于某些ID,不只是一个街道名称。Count告诉将每条街道分配给ID的频率。我怎样才能只获得编号最高的ID和街道名称。 表格示例: 结果应该是这样的: 提前致谢! 问题答案: 您没有指定正在使用的数据库,但是应该可以使用以下数据库: 请参阅带有演示的SQL Fiddle 。注意,您将必须使用MySQL的反引号或数据库使用的任何字符来转义保留字来转义

  • 如何保存flat16(https://en.wikipedia.org/wiki/Half-precision_floating-point_format)最大数量在flat32(https://en.wikipedia.org/wiki/Single-precision_floating-point_format)格式? 我想有一个可以将0x7bff转换为65504的函数。0x7bff是可以用浮

  • 问题内容: 我在詹金斯中可以同时运行的最大作业数是多少? 问题答案: Jenkins作业的最大数量取决于您在主服务器和从服务器中设置的限制。通常,我们会限制核心数量,但是您的里程可能会因可用内存,磁盘速度,SSD的可用性以及源代码的重叠而有所不同。 对于主服务器,这是在“管理詹金斯”>“配置系统”>“执行者数量”中设置的 对于从属(节点),它是在Manage Jenkins>节点>(每个节点)>配

  • 问题内容: 有一个带和的产品表。我正在尝试使用大多数非null实例获取color_id。 这将失败: 和 这 退货 我正在寻找具有最多实例的color_id 3。 有没有2个查询就可以轻松获得我想要的东西的方法吗? 问题答案: SELECT color_id AS id, COUNT(color_id) AS count FROM products WHERE item_id = 1234 AND