将NodeJS与Express 3.x和Jade模板一起使用,是否可以只为先前呈现的列表重新呈现一项?

cAS666666

我一直在尝试寻找任何可以解释是否有可能将一个“新”项目(追加)重新呈现到玉模板列表中的帖子。

  1. 假设我们有一个日志条目列表,并且在第一次请求时,我们使用res.render和Jades的每个功能,从MongoDB集合“ logs”中呈现一个获取的列表。

  2. 由于我们希望从数据库中检索更新,因此该集合还附加了一个MongoWatch,用于监听更改。更新后,我们可以执行一些附加到Jade模板中第一个列表的代码吗?

    /* app.js */
    
    /*
        Display server log 
    */
    app.get ('/logs', function(req, res, next) {
    
      // Using Monk to retrieve data from mongo
      var collection = db.get('logs');
    
      collection.find({}, function(e,docs){
    
        // watch the collection
        watcher.watch('application.logs', function(event){
          // Code that update the logs list with the new single entry event.data?
        });
    
        // Request resources to render
        res.render('logs', { logs: docs } );    
      });
    
    });
    
    <!-- logs.jade -->
    extends layout
    
      block content
    
        div
          each log in logs
            div.entry
              p.url= log.url
    

也许我应该以另一种方式使用模板引擎,我对Express,Jade还是陌生的,真的很感谢大家花时间解决这些问题。

// 问候

cAS666666

好的,所以我已经听了乔纳森·莱诺夫斯基的建议,对了,谢谢!,我想出了解决我问题的方法。以为我会跟进并在此过程中帮助别人。

基本上我现在正在使用建议的socket.io

  1. 因此,首先将socket.io npm模块添加到package.json中,然后运行npm install来安装它,我使用的是“ latest”作为版本。要在客户端上使用“ socket.io.js”,您实际上必须将文件从已安装的socket.io模块复制到javascript文件夹。

    Path (seen from project root is): 'node_modules/socket.io/node_modules/socket.io-client/dist/' 
    
  2. 在服务器端设置数据库,监视程序,Web服务器,套接字和控制器

    /* 
       SETUP DATABASE HANDLE
       in app.js
    */
    var mongo = require('mongodb');
    var monk = require('monk');
    var db = monk('localhost:'+app.get('port')+'/application');
    
    /* SETUP DATABASE UPDATE WATCH */
    var watcher = new MongoWatch({ format: 'pretty', host: 'localhost', port: app.get('port') });
    
    /* START WEBSERVER AND SETUP WEBSOCKET */
    var server = Https.createServer({key: certData.serviceKey, cert: certData.certificate}, app);
    var io = require('socket.io').listen(server);
    server.listen(app.get('port'), function(){
      console.log('Express server listening on port ' + app.get('port'));
    });
    
    /*
        Display server log - controller
    */
    app.get ('/logs', function(req, res, next) {
    
      // Using Monk to retrieve data from mongo
      var collection = db.get('logs');
      collection.find({}, function(e,docs){
    
        // watch the collection logs in database application
        watcher.watch('application.logs', function(event){
              io.sockets.emit('logs', { log: event.data });
        });
    
        // Request resources to render
        res.render('logs', { logs: docs } );    
      });
    });
    
  3. 在布局中包含socket.io javascript

    /* 
       Add client side script
       in layout.jade 
    */ 
    script(type='text/javascript' src='/javascripts/socket.io.js')
    
  4. 使用客户端

    /* 
       SETUP DATABASE HANDLE
       in logs.jade
    */
    extends layout
    
    block content
    
      script.
        var socket = io.connect('https://localhost:4431');
        socket.on('logs', function (data) {
          console.log(data.log);
          // Here we use javascript to add a .log-entry to the list
          // This minor detail i leave to the developers own choice of tools
        });
    
      div.row#logs
        div.col-sm-12
          div.header-log Some application
          div.logs-section
            each log in logs
              div.log-entry.col-sm-12(data-hook=log.status)
                p.method= log.method
                p.url= log.url
                p.status(style='color: #'+log.color+' !important')= log.status
                p.response-time= log.time
                p.content-length= log.length
                p.datetime= log.date
    
  5. 使用该功能时,请记住,此流程是通过在数据库“应用程序”和集合“日志”中实际添加一行来触发的。

我使用ssl,因此在常规http上,我们改为创建“ http”服务器,并从客户端使用标准地址前缀http://连接。

另外请注意,要使用MongoWatch,需要设置带有复制集的MongoDB。这是一个可用作备用(双重用途)的镜像数据库。

干杯! 再次感谢乔纳森!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将NodeJS与Express 3.x和Jade模板一起使用,是否可以只为先前呈现的列表重新呈现一项?

来自分类Dev

可以将npm 3.x与nodejs 4.x一起使用吗?

来自分类Dev

使用NodeJS + Express,aws-sdk将文件直接流式传输到s3

来自分类Dev

将AWS SES与从S3调用的Lambda函数(nodejs)一起使用

来自分类Dev

将Express与NodeJS一起使用时-视图缓存如何工作?

来自分类Dev

将Flexbox与bootstrap 3和laravel 4刀片模板以及相关的LESS mixin一起使用

来自分类Dev

没有“管理”权限策略的情况下,是否可以将MassTransit 3与Azure Service Bus一起使用?

来自分类Dev

使用OpenTK和VB.NET,如何将GLControl与OpenGL 3.x功能一起使用?

来自分类Dev

可以将inotifywait与已安装的S3存储桶一起使用吗?

来自分类Dev

将Bootstrap 2与Bootstrap 3一起使用是否安全?

来自分类Dev

将String.replace()与RegEx一起使用时,AS3是否支持功能?

来自分类Dev

是否有将Direct3D与COM一起使用的参考?

来自分类Dev

将-O3与Emscripten一起使用是否安全?

来自分类Dev

将Bootstrap 2与Bootstrap 3一起使用是否安全?

来自分类Dev

将“ firstOption”与slick 3一起使用

来自分类Dev

使用CSS将3 div粘在一起

来自分类Dev

将Dagre-D3与流星一起使用

来自分类Dev

将Clingo 4.5与Gringo 3一起使用

来自分类Dev

如何将Poet与Node,Express和EJS模板引擎一起使用

来自分类Dev

将Firebase SDK 3与Ionic 1.X一起使用

来自分类Dev

当将vuejs和nodejs与https和express一起使用时,如何修复错误“ net :: ERR_SSL_SERVER_CERT_BAD_FORMAT”

来自分类Dev

Capistrano 3将未知的捆绑软件和stderr与自定义任务一起使用

来自分类Dev

将Openlayers 3和proj4js与RequireJS一起使用

来自分类Dev

使用NodeJS将文件上传到Amazon S3

来自分类Dev

将NodeJS应用连接到SignalR(使用.NET Core 3)

来自分类Dev

引导3的datepicker是否可以与angularjs一起使用?

来自分类Dev

将Express会话与Express一起使用时出错

来自分类Dev

Python3 如何将列表中的所有顺序项乘以列表中的前一项?

来自分类Dev

可以在同一项目中同时使用OpenCV 2.x和OpenCV3吗?

Related 相关文章

  1. 1

    将NodeJS与Express 3.x和Jade模板一起使用,是否可以只为先前呈现的列表重新呈现一项?

  2. 2

    可以将npm 3.x与nodejs 4.x一起使用吗?

  3. 3

    使用NodeJS + Express,aws-sdk将文件直接流式传输到s3

  4. 4

    将AWS SES与从S3调用的Lambda函数(nodejs)一起使用

  5. 5

    将Express与NodeJS一起使用时-视图缓存如何工作?

  6. 6

    将Flexbox与bootstrap 3和laravel 4刀片模板以及相关的LESS mixin一起使用

  7. 7

    没有“管理”权限策略的情况下,是否可以将MassTransit 3与Azure Service Bus一起使用?

  8. 8

    使用OpenTK和VB.NET,如何将GLControl与OpenGL 3.x功能一起使用?

  9. 9

    可以将inotifywait与已安装的S3存储桶一起使用吗?

  10. 10

    将Bootstrap 2与Bootstrap 3一起使用是否安全?

  11. 11

    将String.replace()与RegEx一起使用时,AS3是否支持功能?

  12. 12

    是否有将Direct3D与COM一起使用的参考?

  13. 13

    将-O3与Emscripten一起使用是否安全?

  14. 14

    将Bootstrap 2与Bootstrap 3一起使用是否安全?

  15. 15

    将“ firstOption”与slick 3一起使用

  16. 16

    使用CSS将3 div粘在一起

  17. 17

    将Dagre-D3与流星一起使用

  18. 18

    将Clingo 4.5与Gringo 3一起使用

  19. 19

    如何将Poet与Node,Express和EJS模板引擎一起使用

  20. 20

    将Firebase SDK 3与Ionic 1.X一起使用

  21. 21

    当将vuejs和nodejs与https和express一起使用时,如何修复错误“ net :: ERR_SSL_SERVER_CERT_BAD_FORMAT”

  22. 22

    Capistrano 3将未知的捆绑软件和stderr与自定义任务一起使用

  23. 23

    将Openlayers 3和proj4js与RequireJS一起使用

  24. 24

    使用NodeJS将文件上传到Amazon S3

  25. 25

    将NodeJS应用连接到SignalR(使用.NET Core 3)

  26. 26

    引导3的datepicker是否可以与angularjs一起使用?

  27. 27

    将Express会话与Express一起使用时出错

  28. 28

    Python3 如何将列表中的所有顺序项乘以列表中的前一项?

  29. 29

    可以在同一项目中同时使用OpenCV 2.x和OpenCV3吗?

热门标签

归档