我正在使用Flask-Eve爲我的數據提供一個API。我想用Eve來插入我的記錄,這樣我就可以得到一個_created屬性和其他Eve添加的屬性。如何在Flask Eve中插入有記錄和列表的記錄?
我的兩個字段是字典,一個是列表。當我試圖將它插入伊娃時,結構似乎變得平坦,失去了一些信息。試圖告訴夏娃字典&列表元素給我一個POST錯誤,說這些字段需要是字典和列表,但他們已經是!請有人可以幫我&告訴我我做錯了什麼?
我夏娃的conf是這樣的:
'myendpoint': { 'allow_unknown': True,
'schema': { 'JobTitle': { 'type': 'string',
'required': True,
'empty': False,
'minlength': 3,
'maxlength': 99 },
'JobDescription': { 'type': 'string',
'required': True,
'empty': False,
'minlength': 32,
'maxlength': 102400 },
},
},
但是當我發佈以下結構使用要求:
{
"_id" : ObjectId("56e840686dbf9a5fe069220e"),
"Salary" : {
"OtherPay" : "On Application"
},
"ContactPhone" : "xx",
"JobTypeCodeList" : [
"Public Sector",
"Other"
],
"CompanyName" : "Scc",
"url" : "xx",
"JobTitle" : "xxx",
"WebAdID" : "TA7494725_1_1",
"JobDescription" : "xxxx",
"JobLocation" : {
"DisplayCity" : "BRIDGWATER",
"City" : "BRIDGWATER",
"StateProvince" : "Somerset",
"Country" : "UK",
"PostalCode" : "TA6"
},
"CustomField1" : "Permanent",
"CustomField3" : "FTJOBUKNCSG",
"WebAdManagerEmail" : "xxxx",
"JobType" : "Full",
"ProductID" : "JCPRI0UK"
}
的交行看起來是這樣的:
resp = requests.post(url, data = job)
它得到'變平'並丟失信息從列表和列表:
{
"_id" : ObjectId("56e83f5a6dbf9a6395ea559d"),
"Salary" : "OtherPay",
"_updated" : ISODate("2016-03-15T16:59:06Z"),
"ContactPhone" : "xx",
"JobTypeCodeList" : "Public Sector",
"CompanyName" : "Scc",
"url" : "xxx",
"JobTitle" : "xx",
"WebAdID" : "TA7494725_1_1",
"JobDescription" : "xxx",
"JobLocation" : "DisplayCity",
"CustomField1" : "Permanent",
"_created" : ISODate("2016-03-15T16:59:06Z"),
"CustomField3" : "FTJOBUKNCSG",
"_etag" : "55d8d394141652f5dc2892a900aa450403a63d10",
"JobType" : "Full",
"ProductID" : "JCPRI0UK"
}
我試着更新我的模式說有的字典和列表:
'JobTypeCodeList': { 'type': 'list'},
'Salary': { 'type': 'dict'},
'JobLocation': { 'type': 'dict'},
但後來當我在新的記錄文章中,我得到一個錯誤說
{u'Salary': u'must be of dict type', u'JobTypeCodeList': u'must be of list type', u'JobLocation': u'must be of dict type'},
我已經在POST之前驗證過type(job.Salary) == dict
等,所以我不知道如何解決這個問題。雖然我可以將記錄直接發佈到MongoDB中,但繞過夏娃,如果可能的話,我寧願使用夏娃。