NodeJS,MongoDB:传递获取的数据并将其显示在HTML上

时间:2016-01-01 11:10:08

标签: html node.js mongodb

我已经编写了以下代码来从mongodb获取数据:

app.get('/StudentQuestionsPage',function(req,res){
    var questions="";
    MongoClient.connect(url, function (err, db) {
    if (err) {
    console.log('Unable to connect to the mongoDB server. Error:', err);
    } 
    else {
    console.log('Connection established to', url);  
    var collection = db.collection('studentQuestions');
    var cursor =collection.find();  

    fs.readFile( __dirname + '/StudentQuestionsPage.html', 'utf8', function(err, content) {
      var result = content;
      cursor.each(function (err, doc) {
      if (err) {
        console.log(err);
      } else {
        result +=doc;
      }
        }); 
        res.send(result);
            });
        }
    });
});

我想将超过1的问题传递给html文件,并希望在那里显示这些问题。我可以看到问题正在被提取,但我不确定如何在HTML上显示它们。有人可以帮忙吗?

我添加了以下代码:

app.get('/StudentQuestionsPage',function(req,res){  
var studentQuestions = mongoose.model('studentQuestion', studentQuestionSchema);

fs.readFile( __dirname + '/StudentQuestionsPage.html', 'utf8', function(err, content) {
    var result = content;  
    res.send(result).status({studentQuestions:studentQuestions});
    mongoose.connection.close()
    });
});

但它不会在HTML上打印值。以下是屏幕截图。https://jsfiddle.net/mouseoctopus/7ryfLu68/

请让我知道如何继续。很抱歉ping了很多。

1 个答案:

答案 0 :(得分:1)

var questions = [
    { number: '1', text: 'question_1' },
    { number: '2', text: 'question_2' },
    { number: '3', text: 'question_3' },
];

res.send(result, {
    questions: questions});

在上面的代码中,我假设我有一个预定义的问题数组,而不是初始化一个空数组。在代码的res.send()部分,添加我上面写的代码,创建一个问题列表,我们将在html文件中使用这些问题来显示问题。 HTML文件 -

<h2>Questions</h2>
<ul>
<% questions.forEach(function(question) { %>
    <li>Number: <%= question.number %> - Text: <%= question.text %></li>
<% }); %>
</ul>

通过这种方式,您可以显示问题列表,但这里我们已预先定义了数组。你需要做的是,不是自己将数据传递给数组,而是需要从MongoDb获取数据。您需要做的就是根据数据库的字段更改字段名称。

修改 丢弃硬编码的问题数组。 我现在将尝试从mongodb获取数据。我希望你有mongoDb设置并且很好。在不同的终端打开mongod和mongo,然后运行代码..

在server.js文件中

var mongoose = require('mongoose');//I am using mongoose which you can get by running sudo npm install mongoose
mongoose.connect('mongodb://localhost:27017/dbName');//dbName is the database name from which you need to import the questions

这样您就可以在节点应用中触发数据库。 然后你需要定义你的问题&#39;数据集。

question.js文件

var mongoose = require('mongoose');
module.exports = mongoose.model('Question', {
number: String,
text: String
}

希望这有帮助!!!