angularjs - How to use res.sendFile and res.json together -
when home page loads, call done / , , simultaneously ajax call being done /courses.
a json response /courses being used in html returned / call.
but error shown below occuring in implementation.
error:cannot set headers after sent.
i guess due simultaneous call / , and ajax call /courses.
what solution this, if error due think?
please ask, if more code required.
necessary code being shown below:
nodejs snippet
var express = require('express'); var router = express.router(); var db1 = require('../models/coursedetails.js'); /* home page. */ router.get('/', function(req, res, next) { res.sendfile('index.html'); }); router.get('/courses',function(req,res){ db1.find({},function(err,data){ if(err){ console.log("i in trouble nodejs") }else{ console.log("coming data courses:"); console.log(data[0]); console.log("have complete data..................................."); res.json(data); } }) res.json(data) }); module.exports = router; factory snippet(where ajax call being initiated)
.factory('courses',function($http){ return{ list:function(callback){ $http({ method:'get', url:'/courses' }) .success(callback) .error(function(error){ console.log('i in error of ajax,allcourses') }) } })
the error getting express error happens when code setting headers on response object after response has finished. in case calling res.json() set content-type header, , calling twice in /courses endpoint. happening after if/else block, calling res.json() again.
refactor code this:
router.get('/courses',function(req,res){ db1.find({},function(err,data){ if(err){ console.log("i in trouble nodejs") res.status(500).json({ message : 'error getting courses' }); } else { console.log("coming data courses:"); console.log(data[0]); console.log("have complete data..................................."); res.status(200).json(data); } }); }); i added error handling in case of error coming database query 500 status code, , 200 ok json data if database query successful.
Comments
Post a Comment