首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Eve获取mongodb集合

使用Eve获取mongodb集合
EN

Stack Overflow用户
提问于 2016-05-28 13:42:42
回答 1查看 2K关注 0票数 3

我在一个带有数据库的服务器上运行mongod实例。

为了简单地响应GET请求,我尝试将eve设置为REST http到数据库。

如果我使用单神REST接口请求http://92.51.132.110:28017/clockrefdb/test/rows,我将得到:

代码语言:javascript
复制
{
"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
}

这些值是来自db中文档的正确值。现在,如果我运行前夜和设置:

代码语言:javascript
复制
DOMAIN = { 'test':{} }                                               
MONGO_HOST = 'localhost'
MONGO_PORT = 27017
MONGO_USERNAME = 'user'
MONGO_PASSWORD = 'passw'
MONGO_DBNAME = 'clockrefdb'
RESOURCE_METHODS = ['GET']

并使用默认脚本运行eve:

代码语言:javascript
复制
python run.py

curl --header "Accept:application/json" "http://127.0.0.1:5000/test/57470a1694aef0536bf1d712"

我得到:

代码语言:javascript
复制
{
"_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" }

有两件事很突出:错误的日期和丢失的桌子。你认为是什么引起了对数据库的这种不正确的解读?

我想我错过了一些重要的步骤。

知道是哪一种吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-29 13:42:43

Eve只公开映射到已知域架构的字段。这样做是为了允许API维护者完全控制公开的字段集,因为他/她可能不希望公开整个文档。

所以你有两个选择。可以为端点设置适当的域架构,如下所示:

代码语言:javascript
复制
DOMAIN = {
  'test': {
    'schema': {
      'offset': {'type': 'integer'},
      'rows': {
        'type': 'list',
        'schema': {'type': 'dict', 'schema': ..., }
      },
      ...
    }
  }
}        

或者您可以设置全局ALLOW_UNKNOWN = True。最后一个设置也可作为端点级别的设置。

关于进一步的参考,见:

  • 域配置
  • 模式定义
  • 一般配置
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37499746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档