У меня есть 2 StructuredNodes User
и Token
как отношение один к одному.Исходя из использования Django для реляционных баз данных, если я хочу, чтобы пользователь получил токен, я просто сделал бы User.objects.get(token__key=token)
.
Но используя Neo4j с NeoModel, я изо всех сил пытаюсь найти способ сделатьэтот простой запрос.Должен ли я использовать Cypher для этого?если так, то как?
Кроме того, когда у меня есть экземпляр User
, я могу сделать user.token.single()
, чтобы получить экземпляр Token
, но то же самое не работает наоборот.token.user.single()
возвращает CardinalityViolation: Expected: one relationship in a outgoing direction of type FOR_USER on node (49) of class 'Token', got: none.
, а token.user возвращает объект neomodel.cardinality.One
.
class User(DjangoNode):
uid = UniqueIdProperty()
firstname = StringProperty(index=True, required=True)
lastname = StringProperty(index=True, required=True)
email = EmailProperty(unique_index=True, required=True)
password = StringProperty(requried=True)
token = RelationshipFrom('Token', 'OWNS_TOKEN', cardinality=One)
def post_create(self):
token = Token().save()
self.token.connect(token)
class Token(DjangoNode):
user = RelationshipTo('Token', 'FOR_USER', cardinality=One)
key = StringProperty(unique_index=True, default=generate_key)
created = DateTimeProperty(default_now=True)