我是nodejs的新手,正在尝试编写测验代码。现在我可以使用db.collection.find()
从集合中提取问题了
但我的问题是我不想在页面上一次显示所有数据(即测验问题)。我想要的是我将显示第一个问题,然后当用户点击“下一步”按钮时,将显示下一个问题。
比如说如果有10个问题,那么一开始只会显示一个问题,然后当用户点击“下一步”按钮时,第二个问题将会显示,依此类推。
我对如何实施它缺乏想法。请帮助。
以下是app.js
的相关代码var express = require('express')
, routes = require('./routes')
, user = require('./routes/user')
, http = require('http')
, path = require('path')
, QuizProvider = require('./quizprovider').QuizProvider;
var app = express();
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.set('view options', {layout: false});
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(require('stylus').middleware(__dirname + '/public'));
app.use(express.static(path.join(__dirname, 'public')));
});
app.configure('development', function(){
app.use(express.errorHandler());
});
var qProvider= new QuizProvider('localhost', 27017);
//Routes
......
......
//index
app.get('/', function(req, res){
qProvider.findAll(function(error, ques){
res.render('index', {
title: 'Questions',
myquiz:ques
});
});
});
app.listen(process.env.PORT || 3000);
以下是quizprovider.js的相关代码
var Db = require('mongodb').Db;
var Connection = require('mongodb').Connection;
var Server = require('mongodb').Server;
var BSON = require('mongodb').BSON;
var ObjectID = require('mongodb').ObjectID;
QuizProvider = function(host, port) {
this.db= new Db('quiz-db', new Server(host, port, {safe: false}, {auto_reconnect: true}, {}));
this.db.open(function(){});
};
.......
.......
//find all questions
QuizProvider.prototype.findAll = function(callback) {
this.getCollection(function(error, quiz_collection) {
if( error ) callback(error)
else {
quiz_collection.find().toArray(function(error, results) {
if( error ) callback(error)
else callback(null, results)
});
}
});
};
exports.QuizProvider = QuizProvider;
这是index.jade
extends layout
block content
h1= title
#Questions
- each mq in myquiz
div.mq
div.Question= mq.Question
a(href="/question/new")!= "Add New Question"
答案 0 :(得分:0)
好的朋友我终于找到了解决这个问题的方法。首先,我使用JADE结尾的Javascript将myquiz
中的记录检索到名为data
的数组中,然后使用JADE模板中的以下Jquery代码显示它:
$( "#myquestions" ).html(data[0]);
$( "#option1" ).html(data[1]);
$( "#option2" ).html(data[2]);
$( "#option3" ).html(data[3]);
$( "#option4" ).html(data[4]);
答案 1 :(得分:0)
在一定时间后通过设置setTimeout()
函数并从中调用一个函数来重新加载页面。
然后,每次页面重新加载时,get('/')
将被触发。在j(say)
中增加get('/')
的值,然后将其传递到res.render('index',{j: j})
,并在您的index.jade
中使用它。