Я делаю бэкэнд, который будет подключаться к мобильному приложению, что позволяет пользователю загружать свое местоположение. У меня все работает, но я пытаюсь добавить функцию учетных записей, и я продолжаю получать следующую ошибку.Проблема с Google NDB с добавлением ключевого продукта
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\ext\ndb\model.py", line 2011, in _validate
raise datastore_errors.BadValueError('Expected Key, got %r' % (value,))
BadValueError: Expected Key, got 5733953138851840L
Когда я запускаю следующую команду curl. Я знаю, что ключ учетной записи действителен, поскольку я только что создал его.
curl -X POST -H "Content-Type: application/json" -d '{"time":"Test Account", "longitude": 11.11, "lattitude": 22.22, "account": 5733953138851840}' http://localhost:14080/loc
Идея заключается в том, что для каждого места я также может включать в себя ключ учетной записи, чтобы я мог подтянуть возвраты, которые имеют только определенный ключ учетной записи. вот мой класс DEFS
class Loc(ndb.Model):
time = ndb.StringProperty()
longitude = ndb.FloatProperty()
lattitude = ndb.FloatProperty()
account = ndb.KeyProperty(kind="Account")
class Account(ndb.Model):
name = ndb.StringProperty()
password = ndb.StringProperty()
Вот мой почтовый код.
def post(self):
uinput= self.request.body
r=uinput
j = json.loads(r)
time=j['time']
longitude=j['longitude']
lattitude=j['lattitude']
account=j['account']
if time:
new_loc = class_def.Loc()
new_loc.time=time
if longitude:
try:
new_loc.longitude= float(longitude)
except ValueError:
print("That's not an int!")
if lattitude:
try:
new_loc.lattitude= float(lattitude)
except ValueError:
print("That's not an int!")
if account:
new_loc.account=account
key = new_loc.put()
out= new_loc.to_dict()
self.response.write(json.dumps(out))
else:
#self.response.status = 400
return
Большое спасибо. Это исправляло эту проблему, мне просто нужно выяснить, как получить ее, чтобы json сбросил ключ. – user3334886