Как отправить данные mongodb в браузер с помощью Node.js и eclipse

Я хочу распечатать данные в браузере, полученные из mongodb, используя node.js. Данные находятся в объекте 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;

Но выдает ошибку:

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

Пожалуйста помоги....


person Vijay Garg    schedule 09.04.2015    source источник


Ответы (1)


вы отправляете ответ в два раза

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;
person hussam    schedule 09.04.2015