2016-12-12 5 views
3

Ich versuche EVE zu nutzen, um eine schreibgeschützte Mongo-Dokumentensammlung verfügbar zu machen. Das Problem ist, dass keines der Objektfelder über EVE zurückgegeben wird.Python Eve: Felder, die nicht in der Standardkonfiguration zurückgegeben werden

Der Versuch, so einfach wie möglich zu starten. My mongodb 'restaurants' collection is built using a tutorial.

Ein schneller Test der Mongo Datenbank sieht gut aus:

> db.restaurants.find().limit(1).pretty() 
{ 
     "_id" : ObjectId("584ad656b02a038949ee59cb"), 
     "address" : { 
       "building" : "1007", 
       "coord" : [ 
         -73.856077, 
         40.848447 
       ], 
       "street" : "Morris Park Ave", 
       "zipcode" : "10462" 
     }, 
     "borough" : "Bronx", 
     "cuisine" : "Bakery", 
     "grades" : [ 
       { 
         "date" : ISODate("2014-03-03T00:00:00Z"), 
         "grade" : "A", 
         "score" : 2 
       }, 
       { 
         "date" : ISODate("2013-09-11T00:00:00Z"), 
         "grade" : "A", 
         "score" : 6 
       }, 
       { 
         "date" : ISODate("2013-01-24T00:00:00Z"), 
         "grade" : "A", 
         "score" : 10 
       }, 
       { 
         "date" : ISODate("2011-11-23T00:00:00Z"), 
         "grade" : "A", 
         "score" : 9 
       }, 
       { 
         "date" : ISODate("2011-03-10T00:00:00Z"), 
         "grade" : "B", 
         "score" : 14 
       } 
     ], 
     "name" : "Morris Park Bake Shop", 
     "restaurant_id" : "30075445" 
} 

Der EVE-Server so gering wie möglich konfiguriert ist:

"""Settings/Config for Eve server""" 
from eve import Eve 

# http://python-eve.org/config.html#global-configuration 
SETTINGS = { 
    'DOMAIN': {'restaurants': {}}, 
    'MONGO_HOST': 'localhost', 
    'MONGO_PORT': 27017, 
    # MONGO_USERNAME': os.environ.get(...), 
    # MONGO_PASSWORD': os.environ.get(...), 
    'MONGO_DBNAME': 'tutorial' 
} 

app = Eve(settings=SETTINGS) 

if __name__ == '__main__': 
    app.run(host='0.0.0.0') 

Diese fehlerfrei läuft. Aber wenn ich zu http://server/restaurants navigiere, würde ich erwarten, dass 25 Objekte zurückgegeben werden. Stattdessen sehe ich folgendes, das enthält die Elemente, aber enthält nicht die Objekteigenschaften wie Adresse, Bezirk, Küche, Noten ...

Meine Frage ist: Bin ich falsch zu erwarten, dass EVE Objektattribute in der Auflistung zurückgibt, und wenn ja, welche Konfiguration ändere ich, um dies zu ermöglichen? Ich brauche nur EVE für den schreibgeschützten Zugriff und wird wahrscheinlich eine große Anzahl von Sammlungen mit unterschiedlichen Schemas haben. Ich möchte vermeiden, dass jedes Schema explizit definiert/gepflegt wird.

{ 
    "_items":[ 
     { 
     "_updated":"Thu, 01 Jan 1970 00:00:00 GMT", 
     "_id":"584ad656b02a038949ee59cb", 
     "_links":{ 
      "self":{ 
       "href":"restaurants/584ad656b02a038949ee59cb", 
       "title":"Restaurant" 
      } 
     }, 
     "_created":"Thu, 01 Jan 1970 00:00:00 GMT", 
     "_etag":"dc3b9401f2c4b0d56cfcb432c20ba163db3b0817" 
     }, 
     { 
     "_updated":"Thu, 01 Jan 1970 00:00:00 GMT", 
     "_id":"584ad656b02a038949ee59cc", 
     "_links":{ 
      "self":{ 
       "href":"restaurants/584ad656b02a038949ee59cc", 
       "title":"Restaurant" 
      } 
     }, 
     "_created":"Thu, 01 Jan 1970 00:00:00 GMT", 
     "_etag":"a426dafb6ad7096089bd97c3d48b0a8349bc33cb" 
     }, 

Antwort

3

Versuchen ALLOW_UNKNOWN-True Einstellung. Da Ihre APIs schreibgeschützt sind, riskieren Sie keine Manipulation Ihrer Dokumente.

+0

Das hat den Trick Danke !!! – nachonachoman

+0

Gern geschehen. Bitte akzeptieren Sie die Antwort, wenn sie gültig ist, damit andere wissen, dass sie auch für sie gültig ist. –

Verwandte Themen