在Play框架模板中迭代Mongo DBCursor

时间:2012-06-17 14:36:49

标签: scala mongodb playframework playframework-2.0

我试图在play framework 2.0.1视图中迭代mongo DBCursor。但是,没有列出任何内容。理想情况下,我想分页光标,但即使我能够列出光标中的所有对象,也没关系。

这是我正在做的事情。 在我的控制器中,我查询Mongo DB并渲染DBCursor。日志表明游标不为空。

然后在视图中我有以下内容:

@(cursor: com.mongodb.DBCursor)


@main("Title") {
<div id="objects" class="content">
 <h2>Objects</h2>

 @if(cursor.count() == 0) {
    There are currently no objects in the data base.
 } else {
    @while(cursor.hasNext()) {
        @cursor.next().get("name");
    }
 } 
</div>    
}

不幸的是,除了呈现页面时的标题之外,没有列出任何内容。 有趣的是,如果我省略@while(cursor.hasNext())并仅从光标输出第一个对象,那么它将在页面上呈现。

显然有些事情是错的。那么,是否可以在视图中渲染(和/或分页)DBCursor?

谢谢!

1 个答案:

答案 0 :(得分:3)

在scala模板中可能没有@while!?

这种工作不打算在视图中完成。视图用于渲染,而控制器用于逻辑和访问数据库。考虑将DBObject解析为控制器中的列表或数组,并使用@for在视图中迭代它。

对于分页,请使用以下内容:

myCollection.find(query).skip(40).limit(20);