从MongoDB获取数据并显示在前端

时间:2017-12-15 01:10:20

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

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

我正在尝试构建一个简单的应用程序,这是一个我希望将数据插入数据库(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('/');
});

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

{{# 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}}

//将显示数据的HTML

{{1}}

2 个答案:

答案 0 :(得分:1)

请勿使用此:{{this.nome}} 就像这样使用它:{{nome}}

答案 1 :(得分:0)

以本示例为参考,我创建了一条路由,可以在(http://localhost:3000/test)处访问该路由,您需要先启动Express Server,然后才能访问此路由。该路由将使用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');
    });