Dismiss
Announcing Stack Overflow Documentation

We started with Q&A. Technical documentation is next, and we need your help.

Whether you're a beginner or an experienced developer, you can contribute.

Sign up and start helping → Learn more about Documentation →

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:

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....

share|improve this question

you are sending the response tow times

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

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;
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.