1

tl; dr是否可以使用端点原型数据存储从 POST 接收包含对象的列表并将其插入数据库?

按照示例,在构建我的 API 时,我不知道如何让用户发布对象列表,以便我可以更有效地将一堆数据放入数据库中ndb.put_multi,例如。

从这里在端点_proto_datastore.ndb.model 的评论中,我想它的设计方式是不可能的。我是对的还是我错过了什么?

扩展端点提供的样本可通过以下方式实现预期目标:

class Greeting(messages.Message):
    message = messages.StringField(1)

class GreetingCollection(messages.Message):
    items = messages.MessageField(Greeting, 1, repeated=True)

# then inside the endpoints.api class

    @endpoints.method(GreetingCollection, GreetingCollection,
                      path='hellogretting', http_method='POST',
                      name='greetings.postGreeting')
    def greetings_post(self, request):
        result = [item for item in request.items]
        return GreetingCollection(items=result)

- 编辑 -

4

1 回答 1

3

请参阅有关进入数据存储区的文档POST,您唯一的问题是您的模型不是EndpointsModels。而是为您的Greeting和定义一个数据存储模型GreetingCollection

from endpoints_proto_datastore.ndb import EndpointsModel

class Greeting(EndpointsModel):
    message = ndb.StringProperty()

class GreetingCollection(EndpointsModel):
    items = ndb.StructuredProperty(Greeting, repeated=True)

完成此操作后,您可以使用

class MyApi(remote.Service):
  # ...

  @GreetingCollection.method(path='hellogretting', http_method='POST',                               
                             name='greetings.postGreeting')
  def greetings_post(self, my_collection):
      ndb.put_multi(my_collection.items)
      return my_collection
于 2014-02-16T18:36:34.020 回答