gpt4 book ai didi

python - arangoDB 的 pyarango 驱动程序 : validation

转载 作者:太空宇宙 更新时间:2023-11-03 13:38:26 24 4
gpt4 key购买 nike

我正在为 arangoDB 使用 pyarango 驱动程序 ( https://github.com/tariqdaouda/pyArango ),但我不明白字段验证是如何工作的。我已经在 github 示例中设置了集合的字段:

import pyArango.Collection as COL
import pyArango.Validator as VAL
from pyArango.theExceptions import ValidationError
import types

class String_val(VAL.Validator) :
def validate(self, value) :
if type(value) is not types.StringType :
raise ValidationError("Field value must be a string")
return True

class Humans(COL.Collection) :

_validation = {
'on_save' : True,
'on_set' : True,
'allow_foreign_fields' : True # allow fields that are not part of the schema
}

_fields = {
'name' : Field(validators = [VAL.NotNull(), String_val()]),
'anything' : Field(),
'species' : Field(validators = [VAL.NotNull(), VAL.Length(5, 15), String_val()])
}

所以我期望当我尝试将文档添加到“Humans”集合时,如果“名称”字段不是字符串,则会出现错误。但这似乎并不那么容易。

这是我将文档添加到集合中的方式:

myjson = json.loads(open('file.json').read())
collection_name = "Humans"
bindVars = {"doc": myjson, '@collection': collection_name}
aql = "For d in @doc INSERT d INTO @@collection LET newDoc = NEW RETURN newDoc"
queryResult = db.AQLQuery(aql, bindVars = bindVars, batchSize = 100)

因此,如果“名称”不是字符串,我实际上不会收到任何错误并上传到集合中。

有人知道如何使用 pyarango 的内置验证来检查文档是否包含该集合的正确字段吗?

最佳答案

我没有发现您的验证器有任何问题,只是如果您使用 AQL 查询来插入文档,pyArango 无法在插入之前知道内容。

如果您这样做,验证器仅适用于 pyArango 文档:

humans = db["Humans"]
doc = humans.createDocument()
doc["name"] = 101

这应该会触发异常,因为您已经定义了:

'on_set': True

关于python - arangoDB 的 pyarango 驱动程序 : validation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35917310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com