【问题标题】:Having trouble adding mongodb documents into an array in controller无法将 mongodb 文档添加到控制器中的数组中
【发布时间】:2015-08-02 04:57:17
【问题描述】:

正如标题所说,我正在尝试将 mongodb 中的文档添加到控制器中的数组中。以下代码是我的控制器的样子:

var express = require('express');
var router = express.Router();
var moviesModel = require("../models/movies");

/* GET /movies/ listing. */
router.get('/', function(req, res, next) {
moviesModel.find({}).where('Price').gt(10000).exec(function(err,movies){

    if(err) throw err;
    console.log(movies);
    });
});

module.exports = router;

控制台上方的代码记录了 5 个文档。这些是我试图添加到数组中的文档。我的目标是将文档插入到数组中,然后遍历每个元素并通过视图显示它。我不知道这是否可能。如果您对我应该如何处理这个问题有任何建议,请告诉我。任何帮助,将不胜感激。谢谢!

【问题讨论】:

    标签: javascript model-view-controller express ejs


    【解决方案1】:

    首先,您必须通过res.render 方法的第二个参数将movies 传递给视图:

    var express = require('express');
    var router = express.Router();
    var moviesModel = require("../models/movies");
    
    /* GET /movies/ listing. */
    router.get('/', function(req, res, next) {
        moviesModel.find({}).where('Price').gt(10000).exec(function(err,movies){    
           if(err) throw err;
           console.log(movies);
    
           res.render('layout.ejs', {movies: movies});
        });
    });
    
    module.exports = router;
    

    第二步是在视图中循环movies,并以您想要的格式输出,如下所示:

    layout.ejs

    <!DOCTYPE html>  
    <html lang="en">  
      <head>
        <title>My movies</title>    
      </head>
      <body>
        <ul>
           <% for(var i=0; i<movies.length; i++) {%>
              <li><%= movies[i] %></li>
           <% } %>
        </ul>
      </body>
    </html> 
    

    【讨论】:

    • 嗨谢谢你的工作!我的一个后续问题是,如果我想操作该数组,我会在 ejs 文件上进行所有操作吗?还是我给它加个脚本?
    • 根据最佳实践视图只是以适当的格式显示您的数据。因此,最好在视图之外操作您的数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    • 2022-01-15
    • 2014-07-29
    • 2020-03-17
    • 2012-09-28
    • 2016-10-16
    • 2021-03-09
    相关资源
    最近更新 更多