i new node.js
i making simple application data inserting database fetching database problem when trying access in json model giving me error
var express = require('express'); /* * body-parser piece of express middleware * reads form's input , stores javascript * object accessible through `req.body` * * 'body-parser' must installed (via `npm install --save body-parser`) * more info see: https://github.com/expressjs/body-parser */ var bodyparser = require('body-parser'); // create our app var app = express(); // instruct app use `bodyparser()` middleware routes app.use(bodyparser.urlencoded({ extended: true })); // browser's default method 'get', // route express uses when visit // our site initially. app.get('/', function(req, res){ // form's action '/' , method 'post', // `app.post('/', ...` route receive // result of our form var html = '<form action="/" method="post">' + 'enter name:' + '<input type="text" name="username" placeholder="put name" />' + '<br>' +'enter city:'+'<input type="text" name="usercity" placeholder="put city" />' + '<br>' +'enter state:'+'<input type="text" name="userstate" placeholder="put state" />' + '<br>' +'enter country:'+'<input type="text" name="usercountry" placeholder="put country" />' + '<br>' + '<button type="submit">submit</button>' + '</form>'; res.send(html); }); // route receives posted form. // explained above, usage of 'body-parser' means // `req.body` filled in form elements app.post('/', function(req, res){ var username = req.body.username; var usercity = req.body.usercity; var userstate = req.body.userstate; var usercountry = req.body.usercountry; // var document = {username:username,usercity:usercity,userstate:userstate,usercountry:usercountry}; var html = 'hello: ' + username + '.<br>' +'city: ' + usercity + '.<br>'+'state: ' + userstate + '.<br>'+'country: ' + usercountry + '.<br>'+ '<a href="/">try again.</a>'; // res.send(html); //res.send(json.stringify(doc)); //lets require/import mongodb native drivers. var mongodb = require('mongodb'); var assert = require('assert'); var objectid = require('mongodb').objectid; //we need work "mongoclient" interface in order connect mongodb server. var mongoclient = require('mongodb').mongoclient; // connection url. mongodb server running. var url = 'mongodb://localhost:27017/test'; // use connect method connect server mongoclient.connect(url, function (err, db) { if (err) { console.log('unable connect mongodb server. error:', err); } else { //hurray!! connected. :) console.log('connection established to', url); /* var username = req.body.username; var usercity = req.body.usercity; var userstate = req.body.userstate; var usercountry = req.body.usercountry; var document = {username:username, usercity:usercity,userstate:userstate,usercountry:usercountry};*/ // work here database. var insertdocument = function(db, callback) { db.collection('test').insertone( { "username" :username, "usercity" : usercity, "userstate" : userstate, "usercountry" :usercountry , }, function(err, result) { assert.equal(err, null); console.log("inserted document test collection."); callback(result); }); }; var finddocument = function(db, callback) { var cursor =db.collection('test').find( ); cursor.each(function(err, doc) { assert.equal(err, null); if (doc != null) { console.log(doc); // res.contenttype('application/json'); res.send(json.stringify(doc)); /* app.get('/test', function(req, res, next) { res.json(doc); });*/ } else { callback(); } // res.send(json.stringify(doc)); }); }; mongoclient.connect(url, function(err, db) { assert.equal(null, err); insertdocument(db, function() { finddocument(db, function() { db.close(); }); }); }); /* var document = {name:"david", title:"about mongodb"}; db.collection('test').insertone(document, function(err, records) { if (err) throw err; console.log("record added "+records[0]._id); });*/ //close connection // db.close(); } }); }); app.listen(3000); please me rid off problem. thank you.. error getting cann't set headers after send
this kind of error means try using res.send(...) multiple times same route.
here can see in find document, use cursor.each, , send result inside cursor.each. means send multiple results same route.
what should instead having variable use store result before sending once retrieved.
Comments
Post a Comment