简体   繁体   English

如何使用Node.js和Eclipse将mongodb数据发送到浏览器

[英]How to send mongodb data to browser using Node.js and eclipse

I want to print the data on browser fetched from mongodb using node.js.The data is in docs object.I want to pass this data to an ejs file.So that I can Insert it in to a table: 我想在使用node.js从mongodb获取的浏览器上打印数据,该数据在docs对象中,我想将此数据传递到ejs文件,以便可以将其插入到表中:

var express = require('express');
var router = express.Router();

/* GET users listing. */

router.get('/', function(req, res, next) {

  res.send('respond with a resource');

  var findDocuments = function(db, callback) {

    // Get the documents collection
    var collection = db.collection('Pages');
    // Find some documents
    collection.find({}).toArray(function(err, docs) {
      assert.equal(err, null);
      //assert.equal(6, docs.length);
        res.render('users', { title: docs });
      console.log("Found the following records");

        docs.forEach(function(doc) {
            console.log("Doc from Array ");
            console.dir(doc.PAGE_NAME);
             });
               callback();
    });

  };

  var MongoClient = require('mongodb').MongoClient

      , assert = require('assert');

  var url = 'mongodb://localhost:27017/test';

  MongoClient.connect(url, function(err, db) {

    assert.equal(null, err);
    console.log("Connected correctly to server");

    findDocuments(db, function() {
      db.close();
    });

  });

});

module.exports = router;

But it is throwing an error: 但这会引发错误:

Error: Can't set headers after they are sent.
    at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:335:11)
    at ServerResponse.header (c:\Users\ELITEBOOK 8460P\WebstormProjects\untitled1\node_modules\express\lib\response.js:700:10)
    at ServerResponse.res.contentType.res.type (c:\Users\ELITEBOOK 8460P\WebstormProjects\untitled1\node_modules\express\lib\response.js:537:15)
    at ServerResponse.send (c:\Users\ELITEBOOK 8460P\WebstormProjects\untitled1\node_modules\express\lib\response.js:129:14)
    at fn (c:\Users\ELITEBOOK 8460P\WebstormProjects\untitled1\node_modules\express\lib\response.js:934:10)
    at View.exports.renderFile [as engine] (c:\Users\ELITEBOOK 8460P\WebstormProjects\untitled1\node_modules\ejs\lib\ejs.js:353:10)
    at View.render (c:\Users\ELITEBOOK 8460P\WebstormProjects\untitled1\node_modules\express\lib\view.js:93:8)
    at EventEmitter.app.render (c:\Users\ELITEBOOK 8460P\WebstormProjects\untitled1\node_modules\express\lib\application.js:566:10)
    at ServerResponse.res.render (c:\Users\ELITEBOOK 8460P\WebstormProjects\untitled1\node_modules\express\lib\response.js:938:7)
    at c:\Users\ELITEBOOK 8460P\WebstormProjects\untitled1\app.js:54:7

Please Help.... 请帮忙....

you are sending the response tow times 您正在发送响应两次

1- res.send('respond with a resource'); 1- res.send('respond with a resource');

2- res.render('users', { title: docs }); 2- res.render('users', { title: docs });

var express = require('express');
var router = express.Router();
var MongoClient = require('mongodb').MongoClient,
  assert = require('assert');


var url = 'mongodb://localhost:27017/test';
/* GET users listing. */

router.get('/', function(req, res, next) {

  // res.send('respond with a resource'); 


  MongoClient.connect(url, function(err, db) {

    assert.equal(null, err);
    console.log("Connected correctly to server");

    var collection = db.collection('Pages');
    // Find some documents
    collection.find({}).toArray(function(err, docs) {
      if (err) {
        throw err;
        return;
      }

      console.log("Found the following records");

      docs.forEach(function(doc) {
        console.log("Doc from Array ");
        console.dir(doc.PAGE_NAME);
      });

      res.render('users', {
        title: docs
      });
      db.close();
    });

  });


});

module.exports = router;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM