ejs模板中的Mongodb游标为空(ejs内的异步调用)

时间:2015-03-05 15:31:45

标签: node.js mongodb express ejs

以下路由器调用ejs模板将游标值填充到html页面。

router.get('/users_loaded_disconnect', function(req, res) {
    res.render('users_loaded_disconnect',
           {cursor: req.db.collection('notify_user_state_collection').find({})});
});

user_loaded_disconnect.ejs

<!DOCTYPE html>
<html>
  <head>
  </head>
  <body>
    <b> Users Loaded Disconnect </b>
    <ul>
      <% cursor.nextObject(function(err, item) { %>
      <%= JSON.stringify(item) %>
      <% }); %>
    </ul>
  </body>
</html>

光标不起作用。但是,如果光标在路由器中迭代,如下面的代码,则打印值

req.db.collection('notify_user_state_collection').find({}).nextObject(function(err, item) {
        console.log(JSON.stringify(item));
    });

在ejs模板中迭代光标有什么问题?

1 个答案:

答案 0 :(得分:1)

游标操作是异步的。 Ejs不会等待它完成,并将在数据可用之前继续渲染模板。您无法在ejs模板中有效地使用回调。