Eve - 是否可以从文档中取消设置密钥?

问题描述:

与可选的值,如在本例中code架构:Eve - 是否可以从文档中取消设置密钥?

'code': { 
    'type': 'string', 
}, 
'name': { 
    'type': 'string', 
    'required': True, 
}, 
'email': { 
    'type': 'string', 
    'required': True 
} 

比方说,有与code值插入文档。我可以使用夏娃以某种方式取消这样的code键吗?

+0

该片段是cerberus模式,用于在验证API文档的前夕。我想要的是通过API调用删除密钥。 – gcw

达到此目的的一种方法是为端点设置一个default projection

限制由API端点 默认情况下,API响应暴露的字段集,GET请求将包括由相应的资源架构中定义的所有字段。数据源资源关键字的投影设置允许您重新定义字段。

people = { 
    'datasource': { 
     'projection': {'username': 1} 
    } 
} 

以上设置将仅暴露用户名字段GET请求,无论该资源的架构中定义。

另一种选择是利用MongoDB Aggregation Framework本身。只需设置端点,以便在将数据返回给客户端之前执行聚合。以下应工作(见docs了解详细信息):

posts = { 
    'datasource': { 
     'aggregation': { 
      'pipeline': [{"$unset": "code"}] 
     } 
    } 
} 

你需要前夕V0.7为聚合支持。

+0

感谢尼古拉的帮助。我想我没有正确解释它。在相同模式的某些文档中,该字段可能存在,因此它对于所有文档都不是一般规则,而是实际上是可选字段。想象一下,密钥可能存在,并且在事件发生之后,它应该从文档中移除。 – gcw

+0

增加了一个替代方法,可能适用于您的用例。 –

+0

我应该错过了一些东西,但我无法让第二个选项工作。我已经添加了文档模式的数据源,但是资源的GET仍然显示“代码”。在这种情况下,请求是否应该改变?如果工作,是不是会为所有文档设置“代码”?再次感谢。 – gcw