【问题标题】:GET data from MongoDB and display on the front end从 MongoDB 获取数据并显示在前端
【发布时间】:2018-05-29 04:43:11
【问题描述】:

我刚刚开始学习将 NodeJS 用作我的应用程序的后端,但这是我第一次使用服务器端技术。

我正在尝试构建一个简单的应用程序,它是一种我想将数据插入数据库 (mongodb) 并让数据显示在前端的表单。我正在使用快速车把。

数据已成功保存到数据库中,但是当我尝试从数据库中获取数据以显示在前端时,没有任何反应。

有人知道我的代码有什么问题吗?

谢谢!!

//代码从这里开始

var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var assert = require('assert');

var url = 'mongodb://felipe:teste@ds033125.mlab.com:33125/form';
mongoose.connect(url);


/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index');
});

// 将数据插入数据库(MONGODB)

router.post('/insert', function(req, res, next) {
    
    var Schema = mongoose.Schema;
    
    var itemSchema = new Schema({
        nome: String,
        sobrenome: String,
        nacionalidade: String,
        email: String
    });
    
    var CreateItem = mongoose.model('CreateItem', itemSchema);
    
    var item = new CreateItem({
        
        nome: req.body.getNome,
        sobrenome: req.body.getSobrenome,
        nacionalidade: req.body.getNacionalidade,
        email: req.body.getEmail
    });
    
    item.save(function(err) {
        if (err) throw err;
        console.log(item.nome + ' was saved!');
    });
    
    
    
    res.redirect('/');
    console.log(item.nome + ' ' + item.sobrenome + ' was saved!'); 
});

// 从 MONGODB 获取数据并在前端显示

router.get('/', function(req, res, next) {
  res.render('index');
});


router.get('/get-data', function(req, res, next) {
    
    var resultArray = [];
    
    mongoose.connect(url, function(err, db) {
        assert.equal(null, err);
        var cursor = db.collection('createitems').find();
        cursor.forEach(function(err, doc) {
            assert.equal(null, err);
            resultArray.push(doc); 
        }, function() {
            db.close;
            res.render('index', {items: resultArray});
        });
    });
    
    res.redirect('/');
});

// 显示数据的 HTML

{{# each items}}
      <tr>                    
         <div class="col-md-3">
            <td class="data">{{ this.nome }}</td>
         </div>
         <div class="col-md-3">
            <td class="data">{{ this.sobrenome }}</td>
         </div>
         <div class="col-md-3">
            <td class="data">{{ this.nacionalidade }}</td>
         </div>
         <div class="col-md-3">
            <td class="data">{{ this.email }}</td>
         </div>
      </tr>
                    
{{/each}}

【问题讨论】:

  • 您可以尝试在res.render 之前记录resultArray 吗?而对于handlebars,则不需要this.,直接使用{{nome}}{{sobrenome}}即可。
  • 你好,谢谢你的帮助!我刚刚尝试在 res.render 之前使用 console.log(resultArray),但没有任何反应 =/ 我将继续尝试哈哈

标签: javascript node.js mongodb express handlebars.js


【解决方案1】:

不要使用这个:{{ this.nome }} 就这样使用它:{{ nome }}

【讨论】:

    【解决方案2】:

    参考这个例子,我创建了一个你可以访问的路由 (http://localhost:3000/test) 你需要在访问这个路由之前启动 express 服务器,这个路由将使用 mongoose 从 mongo db 获取数据并返回它。您可以使用邮递员尝试此路线。

    var express = require("express"),
        app = express(),
        bodyparser = require("body-parser"),
        mongoose = require("mongoose");
    
    const router = express.Router();
    
    app.use(bodyparser.json());
    
    mongoose.connect('mongodb://localhost:27017/test');
    
    const connection = mongoose.connection;
    
    connection.once('open', () => {
        console.log('MongoDB connected successfully');
    })
    
    var schema = new mongoose.Schema({
        name: String,
        value: String
    })
    
    var data=mongoose.model("testdata", schema);
    
    router.route('/test').get((req, res) => {
        data.find((err, (testdata);=> {
            if (err)
                console.log("Found some error" + err)
            else
                res.json(testdata);
    
        })
    })
    
    
        app.use('/', router);
    
    
    
        app.listen(3000, function () {
            console.log('server started on port 3000');
        });
    

    【讨论】:

      猜你喜欢
      • 2022-01-09
      • 2018-06-17
      • 2021-12-03
      • 2020-07-18
      • 1970-01-01
      • 1970-01-01
      • 2022-11-23
      • 2016-11-24
      • 2020-10-30
      相关资源
      最近更新 更多