2013-04-09 18 views
-1

我正在使用Flask和CouchDB。我已将文件文档映射到文件对象。我应该如何在烧瓶中使用CouchDBs视图

class File(Document): 
    name = TextField() 
    conten = TextField() 

在我的Flask Blueprint中,我想返回所有文件。我怎么做。我知道我必须写下如下图:

function(doc) { 
    if(doc.type == 'file') { 
     emit(doc_id, doc) 
    } 
} 

但是我要把这段代码放在哪里?在我的File对象中?我是否必须将此视图定义添加到CouchDBManager?或者我应该使用query函数?

回答

0

请勿使用查询功能,即仅针对临时视图,即不适用于生产用途。相反,您应该创建一个类ViewDefinition的对象,并将该对象传递给CouchDBManager.add_viewdef方法。这在http://pythonhosted.org/Flask-CouchDB/#writing-views上有更详细的描述。

或者,您可以直接使用CouchDB http界面上传设计文档。由于您只需创建一次视图,这仍然是可行的。实际上,您可以在http://localhost:5984/_utils上打开日式床垫,并使用数据库中的视图创建设计文档。有关http://guide.couchdb.org/draft/design.html的更多信息。

+0

如果按照您最初描述的方式完成。但是如何在蓝图中创建ViewDefinition? – OrangeTux 2013-04-10 10:58:30

+0

我不确定是否正确理解您的问题,但要创建一个ViewDefinition对象,您只需将其称为:ViewDefinition(“<设计文档名称>”,“”,“”)。您在问题中列出的视图代码将列出字段类型等于“文件”的所有文档。 – brdlph 2013-04-10 12:53:33