파이썬 ndb 사용과 관련하여 몇 가지 의문점이 있습니다. proto 데이터 저장소를 사용하고 있습니다. 클래스가 있습니다. 사용자파이썬 ndb에서 고유 한 사용자 이름
class User(EndpointsModel):
name = ndb.StructuredProperty(Name, required=True)
dateOfBirth = ndb.DateProperty(required=True)
userName = ndb.StringProperty(required=True)
emailId = ndb.StringProperty(required=True)
사용자 이름을 기반으로 사용자 엔티티를 가져 오려고합니다. 새 사용자 개체를 만들고 수행 할 때
user.id = username
"ID는 정수 여야합니다."라는 오류 메시지가 나타납니다. 어떻게이를 극복합니까? 또한 user.get_by_id()는 보다 빠릅니다. User.query (User.username == username)?
나는 모든 사용자 이름이 고유하기를 원한다면 사용자 이름의 엔티티를 생성하고 새로운 사용자가 이미 존재하거나 또는이를 수행 할 수있는 다른 깔끔하고 효율적인 방법이있을 때마다 확인해야합니다.
'username'을 키로 설정하는 문제 중 하나는 생성 후 사용자 이름을 변경할 수 없다는 것입니다 ... 요청 당 처리가 완료 되더라도 대부분의 시간이 필요합니다. – Lipis
공정한 점. 요구 사항 인 경우 독창성 요구 사항은 다소 어려워집니다. 트랜잭션마다 사용자 이름을 예약 할 수 있도록 엔티티 당 하나의 사용자 이름을 포함하는 큰 엔티티 그룹이 필요할 수 있습니다. (모든 'User'엔티티를 단일 엔티티 그룹에 두는 것은 바람직하지 않을 수 있습니다.) 그룹 간 트랜잭션은 사용자 생성 및 이름 변경에 유용합니다. 이 레이아웃을 사용하면 사용자 이름에서 사용자 ID를 찾는 검색어가 가장 좋은 옵션 일 수 있으며 드물게 (예 : 로그인 할 때 한 번만) 수행하면 비용이 많이 들지 않습니다. –
위의 방법을 사용하면 특정 사용자 이름으로 한 명의 사용자 만있을 수 있지만 새 사용자를 추가 할 때 다른 사용자가이 사용자 이름을 가지고 있는지 확인해야합니다. 그렇지 않으면 사용자의 데이터 멤버를 업데이트합니다. –