使用 Eve 获取 mongodb 个集合
Get mongodb collection using Eve
我有 mongod 实例 运行ning 在带有数据库的服务器上。
我正在尝试将 eve 设置为数据库的 REST http API,以便简单地响应 GET 请求。
如果我使用 mongod REST 接口请求 http://92.51.132.110:28017/clockrefdb/test/rows,我得到:
{
"offset" : 0,
"rows": [
{ "_id" : { "$oid" : "5745ef6494aef075d127f1d0" }, "timestamp" : { "$date" : "2016-05-25T22:31:00.035+0200" }, "frequencies" : [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ] } ,
{ "_id" : { "$oid" : "5747034194aef04e87df598d" }, "timestamp" : { "$date" : "2016-05-26T18:08:01.209+0200" }, "frequencies" : [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ] } ,
{ "_id" : { "$oid" : "5747050094aef04fe7aa7c14" }, "timestamp" : { "$date" : "2016-05-26T18:15:28.576+0200" }, "frequencies" : [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ] } ,
{ "_id" : { "$oid" : "5747050b94aef04ff397c81f" }, "timestamp" : { "$date" : "2016-05-26T18:15:39.779+0200" }, "frequencies" : [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ] } ,
{ "_id" : { "$oid" : "5747052694aef050096e5c71" }, "timestamp" : { "$date" : "2016-05-26T18:16:06.635+0200" }, "frequencies" : [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ] } ,
{ "_id" : { "$oid" : "57470a1694aef0536bf1d712" }, "timestamp" : { "$date" : "2016-05-26T18:37:10.022+0200" }, "frequencies" : [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ] }
],
"total_rows" : 6 ,
"query" : {} ,
"millis" : 0
}
数据库中文档的正确值是什么。
现在,如果我 运行 前夕和设置:
DOMAIN = { 'test':{} }
MONGO_HOST = 'localhost'
MONGO_PORT = 27017
MONGO_USERNAME = 'user'
MONGO_PASSWORD = 'passw'
MONGO_DBNAME = 'clockrefdb'
RESOURCE_METHODS = ['GET']
和运行 使用默认脚本的前夕:
python run.py
和curl --header "Accept:application/json" "http://127.0.0.1:5000/test/57470a1694aef0536bf1d712"
我得到:
{
"_created": "Thu, 01 Jan 1970 00:00:00 GMT",
"_etag": "c020b57efefeb92a74f5d07875d9234e3aef077a",
"_id": "57470a1694aef0536bf1d712",
"_links": {
"collection": {
"href": "test",
"title": "test"
},
"parent": {
"href": "/",
"title": "home"
},
"self": {
"href": "test/57470a1694aef0536bf1d712",
"title": "Test"
}
},
"_updated": "Thu, 01 Jan 1970 00:00:00 GMT" }
有两件事很突出:错误的日期和失踪 table。
您认为是什么导致了对数据库的错误读取?
我想我错过了一些重要的步骤。
知道哪个吗?
Eve 只会公开映射到已知域架构的字段。这样做是为了允许 API 维护者完全控制公开的字段集,因为 he/she 可能不希望公开整个文档。
所以你有两个选择。您可以为端点设置适当的域架构,例如:
DOMAIN = {
'test': {
'schema': {
'offset': {'type': 'integer'},
'rows': {
'type': 'list',
'schema': {'type': 'dict', 'schema': ..., }
},
...
}
}
}
或者您可以设置全局 ALLOW_UNKNOWN = True
。最后一个设置也可用作端点级别设置。
如需进一步参考,请参阅:
我有 mongod 实例 运行ning 在带有数据库的服务器上。
我正在尝试将 eve 设置为数据库的 REST http API,以便简单地响应 GET 请求。
如果我使用 mongod REST 接口请求 http://92.51.132.110:28017/clockrefdb/test/rows,我得到:
{
"offset" : 0,
"rows": [
{ "_id" : { "$oid" : "5745ef6494aef075d127f1d0" }, "timestamp" : { "$date" : "2016-05-25T22:31:00.035+0200" }, "frequencies" : [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ] } ,
{ "_id" : { "$oid" : "5747034194aef04e87df598d" }, "timestamp" : { "$date" : "2016-05-26T18:08:01.209+0200" }, "frequencies" : [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ] } ,
{ "_id" : { "$oid" : "5747050094aef04fe7aa7c14" }, "timestamp" : { "$date" : "2016-05-26T18:15:28.576+0200" }, "frequencies" : [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ] } ,
{ "_id" : { "$oid" : "5747050b94aef04ff397c81f" }, "timestamp" : { "$date" : "2016-05-26T18:15:39.779+0200" }, "frequencies" : [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ] } ,
{ "_id" : { "$oid" : "5747052694aef050096e5c71" }, "timestamp" : { "$date" : "2016-05-26T18:16:06.635+0200" }, "frequencies" : [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ] } ,
{ "_id" : { "$oid" : "57470a1694aef0536bf1d712" }, "timestamp" : { "$date" : "2016-05-26T18:37:10.022+0200" }, "frequencies" : [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ] }
],
"total_rows" : 6 ,
"query" : {} ,
"millis" : 0
}
数据库中文档的正确值是什么。 现在,如果我 运行 前夕和设置:
DOMAIN = { 'test':{} }
MONGO_HOST = 'localhost'
MONGO_PORT = 27017
MONGO_USERNAME = 'user'
MONGO_PASSWORD = 'passw'
MONGO_DBNAME = 'clockrefdb'
RESOURCE_METHODS = ['GET']
和运行 使用默认脚本的前夕:
python run.py
和curl --header "Accept:application/json" "http://127.0.0.1:5000/test/57470a1694aef0536bf1d712"
我得到:
{
"_created": "Thu, 01 Jan 1970 00:00:00 GMT",
"_etag": "c020b57efefeb92a74f5d07875d9234e3aef077a",
"_id": "57470a1694aef0536bf1d712",
"_links": {
"collection": {
"href": "test",
"title": "test"
},
"parent": {
"href": "/",
"title": "home"
},
"self": {
"href": "test/57470a1694aef0536bf1d712",
"title": "Test"
}
},
"_updated": "Thu, 01 Jan 1970 00:00:00 GMT" }
有两件事很突出:错误的日期和失踪 table。
您认为是什么导致了对数据库的错误读取?
我想我错过了一些重要的步骤。
知道哪个吗?
Eve 只会公开映射到已知域架构的字段。这样做是为了允许 API 维护者完全控制公开的字段集,因为 he/she 可能不希望公开整个文档。
所以你有两个选择。您可以为端点设置适当的域架构,例如:
DOMAIN = {
'test': {
'schema': {
'offset': {'type': 'integer'},
'rows': {
'type': 'list',
'schema': {'type': 'dict', 'schema': ..., }
},
...
}
}
}
或者您可以设置全局 ALLOW_UNKNOWN = True
。最后一个设置也可用作端点级别设置。
如需进一步参考,请参阅: