我正在使用IBM的bluemix为学校做项目,而我却无法找到错误的位置。我有一个CSV数据库,有一些参数(邻域,房间数,面积,平方米等)。我还有一个JADE文件,其中包含用户必须填写的表单。在此表单中,用户将选择他想要的房间数量以及其他所有房间。然后,我在JAVASCRIPT中的应用程序应该能够根据用户的选择运行数据库。但是,出于某种原因,结果不会出现在网页中。
这是我的代码:
/*eslint-env node*/
//------------------------------------------------------------------------------
// node.js starter application for Bluemix
//------------------------------------------------------------------------------
// This application uses express as its web server
// for more info, see: http://expressjs.com
var express = require('express');
// cfenv provides access to your Cloud Foundry environment
// for more info, see: https://www.npmjs.com/package/cfenv
var cfenv = require('cfenv');
var fs = require('fs');
var parse = require('csv-parse');
// create a new express server
var app = express();
function seleciona_dados(dados, parametros){
var resultado = {Bairro: [], quartos: [], area: [], valor: [], endereco: [], img: []};
for (var i = 1; i < dados.Bairro.length; i++){
if (dados.Bairro[i] == parametros.bairro && dados.quartos[i] == parametros.quartos && dados.area[i] >= Number(parametros.area) && dados.valor[i] <= Number(parametros.valor)){
resultado.bairro.push(dados.bairro[i]);
resultado.quartos.push(dados.quartos[i]);
resultado.area.push(dados.area[i]);
resultado.valor.push(dados.valor[i]);
resultado.endereco.push(dados.endereco[i]);
resultado.img.push(dados.img[i]);
}
}
return resultado;
}
// serve the files out of ./public as our main files
app.use(express.static(__dirname + '/public'));
// get the app environment from Cloud Foundry
var appEnv = cfenv.getAppEnv();
// start server on the specified port and binding host
app.listen(appEnv.port, '0.0.0.0', function() {
// print a message when the server starts listening
console.log("server starting on " + appEnv.url);
});
var bodyParser = require("body-parser");
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.get('/', function(req, res){
res.render('cadastro.jade', { pageTitle: 'Cadastro Usuário'});
});
app.post('/resumo', function(req, res){
// var furfles = req.body;
var parser = parse({delimiter: ';'}, function(err, data){
var dados = {bairro: [], quartos: [], area: [], valor: [], endereco: [], img: []};
for (var i = 1; i < data.length; i++){
dados.bairro.push(data[i][0]);
dados.quartos.push(data[i][1]);
dados.area.push(Number(data[i][2]));
dados.valor.push(Number(data[i][3]));
dados.endereco.push(data[i][4]);
dados.img.push(data[i][5]);
}
dados = seleciona_dados(dados, req.body);
res.render('resumo.jade', {pageData:{ pageTitle: 'Resumo do Pedido do Usuário'}, formData: req.body, imoveis: dados});
});
fs.createReadStream(__dirname+'/static/BD.csv').pipe(parser);
});
&#13;
数据库中所选公寓的列表应显示在此图片的最后一句下方。Page
答案 0 :(得分:0)
我已将您的代码更新为:
- 声明jade
作为模板语言
- 删除未使用的代码
- 为dados
实施字典比较
- CSV数据库的初始异步加载,请参阅load_csv_database
- 使用Array.filter和equal_to
过滤数据库
/*jslint node: true */
'use strict';
// CONFIGURE EXPRESS
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(express.static(__dirname + '/public'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
app.set('view engine', 'jade');
// CONFIGURE EXPRESS
var cfenv = require('cfenv');
var appEnv = cfenv.getAppEnv();
var fs = require('fs');
var csvParse = require('csv-parse');
var database;
/**
* Loads the CSV filename and parse it as JSON Object
* @param String filename The csv filename
* @param {Function} cb The callback
*/
function load_csv_database(filename, cb) {
fs.createReadStream(filename).pipe(
csvParse({ delimiter: ';' }, function(err, data) {
if (err) {
cb(err);
return;
} else {
var result = {
bairro: [],
quartos: [],
area: [],
valor: [],
endereco: [],
img: []
};
data.forEach(function(e) {
result.bairro.push(e[0]);
result.quartos.push(e[1]);
result.area.push(Number(e[2]));
result.valor.push(Number(e[3]));
result.endereco.push(e[4]);
result.img.push(e[5]);
});
cb(null, result);
}
}));
}
// initial database async load
load_csv_database(__dirname + '/static/BD.csv', function(err, result) {
if (!err)
database = result;
else
console.log('error:', err);
});
function equal_to(origin) {
return function compareTo(target) {
for (var p in origin) {
if (origin.hasOwnProperty(p)) {
if (origin[p] !== target[p]) {
return false;
}
}
}
for (var p2 in target) {
if (target.hasOwnProperty(p2)) {
if (origin[p2] !== target[p2]) {
return false;
}
}
}
return true;
};
}
app.get('/', function(req, res) {
res.render('cadastro', { pageTitle: 'Cadastro Usuário' });
});
app.post('/resumo', function(req, res) {
// use the global variable "database"
var result = database.filter(equal_to(req.body));
res.render('resumo.jade', {
pageData: { pageTitle: 'Resumo do Pedido do Usuário' },
formData: req.body,
imoveis: result
});
});
app.listen(appEnv.port, '0.0.0.0', function() {
console.log('server starting on ' + appEnv.url);
});