我创建了一个 API,其中字段之一是任意 JSON 对象。我正在使用 Sequelize 和 Postgres。该字段需要灵活,因为它允许用户存储自己的元数据,但我确实想限制大小以防止用户上传巨大的对象。这是我当前关于对象定义的解决方案:
metadata: {
type: DataTypes.JSONB,
allowNull: true,
validate: {
len: {
args: [18, 1000],
msg: 'Metadata exceeds the max length of 1000 characters.',
},
},
},
这基本上有效,但我不知道 len
实际测量的是什么,因为它不是字符串。它似乎没有测量 JSON 对象中的字符数。我确信有更好的方法来做到这一点,但我所有的谷歌搜索都只是显示有关 Postgres 中 JSONB 对象的最大大小的信息。我想设置一个低于最大大小的限制。我希望目前能够将其限制为 ~1,000 个字符或 1KB。
最佳答案
您可以使用检查约束:
CREATE TABLE (
...
jcol jsonb CHECK (length(jcol::text) < 1000)
);
考虑标准化数据。
关于javascript - 如何设置 JSON 对象的大小限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66229629/