我正在使用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中,但绕过夏娃,如果可能的话,我宁愿使用夏娃。