neomodel.StructuredNode
上的unique
属性的行为对我来说有点混乱。
有人能告诉我这是解释的文档吗?或者让我知道我误解了什么?
型号:
class Person(neomodel.StructuredNode):
uuid = neomodel.UniqueIdProperty()
legacy_external_id = neomodel.StringProperty(unique=True, required=False)
并不是所有的Person
示例都有这个“legacy_external_id”,但是在它存在的地方,它需要是唯一的。
上面的代码在我看来符合这个描述。
但实际上,输出是:
In[]: p = Person(legacy_external_id='u12345')
In[]: p.save()
Out[]: < Person: {'uuid': '7d7e5c2224d647e9a87d23b9cb1c4153', 'legacy_external_id': 'u12345'} >
In[]: p = Person(legacy_external_id='u12345')
In[]: p.save()
Out[]: < Person: {'uuid': 'ed7690f8f28b4cf288c35d2130a2e6e4', 'legacy_external_id': 'u12345'} >
In[]: p = Person(legacy_external_id='u12345')
In[]: p.save()
Out[]: < Person: {'uuid': '7393a4b5022d40d8aca002cecac9b124', 'legacy_external_id': 'u12345'} >
只是不断增殖的节点(没有错误或警告)并不是我所期望的行为。
我很好自己写验证,但在我开始之前,我有兴趣了解我的误解。
任何建议都是赞赏的,谢谢!
2条答案
按热度按时间koaltpgm1#
首先,它应该是
unique_index=True
,而不是unique=True
。此外,当前版本的Neomodel不支持
unique_index=True
和required=False
的组合。如果一个属性被设置为unique,那么它也会自动被视为必需的(可能是因为否则,你可能有两个或更多的节点具有null属性,这将不是唯一的)。djmepvbi2#
我也遇到了同样的问题,这是由于没有安装索引和约束指令造成的,如下所述:https://neomodel.readthedocs.io/en/latest/configuration.html#enable-automatic-index-and-constraint-creation