【发布时间】: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