问题标签 [cerberus]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mongodb - 蟒蛇前夕。在 Cerberus 架构上声明一组对象 ID
我正在使用 Python-Eve 开发一个 API,我需要使用 Cerberus 创建一个 MongoDB 模式声明来表达如下所示的文档:
我想知道如何将 Cerberus 模式声明为具有 的数组ObjectID
,就像devices
上面的键一样。
我想为对其他文档的引用数组提供一个架构,并可能使它们可嵌入,就像下面的单元素架构示例一样,取自 Python-Eve文档:
我怀疑这将需要一个自定义类型,但我还没有想出如何去做。
python - 在 Cerberus 中,您可以将“valueschema”与“dict”类型一起使用吗?
所以我使用 Cerberus 进行模式验证,但我遇到了一个特殊的问题,即验证一个密钥未知的字典的子字典。
所以说我有以下文件:
所以我想验证子词典是否具有特定的结构(foo
和bar
作为键),但我无法在不提前知道键的情况下找到一种方法来验证它(在我的情况下是随机 id。我想这是很好地使用了 valueschema 但我似乎无法让 valueschema 与“dict”类型的东西一起工作。我试图在 cerberus 中设置以下模式:
我是否错误地定义了我的架构,或者这对于当前的valueschema
. 我在存储库中看到了一些使用 的测试valueschema
,但它们只测试类型valueschema
是 int 或 string 的情况。
python - 修补到具有 Eve 中类型为“dict”的“valueschema”的字段时无法序列化数据
所以说我有以下文件:
对于本文档,我有以下架构:
现在说我用以下伪代码制作了一个补丁:
当我制作这个补丁时,Cerberus 在验证期间引发了一个错误,说"value '5712d06fdb4d0856551300d8' cannot be converted to a ObjectId"
. 现在这是一个有效的对象 ID,我发现如果我对其他非 valueschema 字段进行修补,它不会引发此错误。似乎 valuesschema 并不意味着具有 dict 的值,并且添加一个额外的“模式”属性是我可以绕过 cerberus 引发模式错误/让 cerberus 实际验证我的字段的唯一方法。但是 eve 实际上并没有正确地序列化我字典中的字段。当它被传递给 Cerberus 时,它应该是 ObjectId 类型。
我暂时解决这个问题的方法是在 Eve 中操作我的代码。在第 398 行的序列化(函数)中的 common.py(模块)中,我添加了它检查字段模式是否为“valueschema”:
我不应该使用类型dict
吗valueschema
?如果不是,我还应该如何处理这种情况?我不想维护我自己的 Eve 分支,所以如果其他人确实想要具有valueschema
类型的能力,dict
我应该为此更改提交请求请求吗?
python - Cerberus 模式验证依赖于自身值
我知道根据 Cerberus文档,可以根据其他键值定义验证依赖项,例如:
field2
仅当存在field1
且具有值one
或时才有效two
。
我想知道是否有一种方法可以根据密钥本身的值来考虑验证规则。
类似于:仅当value 为时才field2
需要field1
value ,反之亦然。False
field2
True
一次只能允许其中一个字段存在True
。
eve - 强制 Eve 验证自定义路由中的文档
在我的 python/eve REST API 中,我有一个自定义路由,可以进行一些非常重要的处理。我收到一个 POST 请求,经过一些处理后,我会将此文档发送到数据库。但是,如果我可以使用 Eve 使用的相同验证来验证此文档,那就太好了。我知道我可以直接使用 cerberus,但它不能处理data_relation
我在架构中拥有的东西。
有什么方法可以调用内部 Eve 验证器?
python - Cerberus 自定义规则和自定义验证器有什么区别?
从文档中,我不清楚自定义规则和自定义验证器的用例有什么区别。在文档中给出的示例中,唯一的区别是在自定义规则if
中检查值的额外语句。is_odd
我什么时候应该更喜欢自定义规则,什么时候应该更喜欢自定义验证器?
自定义规则
自定义验证器
python - 如何在 Cerberus 架构中添加注释?
我正在使用 python-eve,我想在模式文件 (.json) 中添加一些注释。所以直到现在我尝试了不同的评论风格:
都产生错误:
python - Cerberus 依赖项如何引用文档中更高的字段?
我正在尝试为具有引用文档中较高字段的依赖项的文档创建一个架构。例如:
我在这里苦苦挣扎的是强制执行 build-steps.needs-some-package 和 packages.some-package 之间的依赖关系。每当构建步骤包含“needs-some-package”时,包必须包含“some-package”。
当“needs-some-package”不存在时,“some-package”不是必需的。所以这个文件也应该验证。
在看起来合适的地方具有依赖关系的模式是
但这不起作用,因为似乎 Cerberus 正在“构建步骤”下的子文档中寻找“包”。有没有办法上文档树?或者参考文档根目录的内容?
python - 在 Python 中使用 cerberus 验证布尔值
我正在尝试在 Python 中使用 Cerberus 来验证一些数据。
我发现对于“布尔”类型,验证器总是返回 True,如下所示:
上面的代码打印了两个 True。
实际上,我需要验证该值是 True 还是 False(Python 中的 bool 类型),其他值不应通过验证器。