• 01-10-2018, 00:49:59
    #1
    NodeJS ile ufak bir web servis yapmam gerekiyor. Bunun için GET, POST ve PUT kullanıyorum. Veri tabanı kullanmıyorum. Hazır JSON dosyası üstünden işlerimi yapıyorum.

    var express = require('express');
    var app = express();
    var bodyParser = require('body-parser');
    var fs = require('fs');
    var json_file = 'book_list2.json';
    var port = process.env.PORT||4000;
    var router = express.Router();
    
    app.use(function (req, res, next) {
      res.header("Access-Control-Allow-Origin", "*");
      res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
      next();
    });
    
    router.use(bodyParser.urlencoded({ extended: true }));
    router.use(bodyParser.json());
    
    function jsRead(){
    
      return new Promise(resolve => {
        fs.readFile(json_file, 'utf8', function (err, response) {
            if (err) {
                console.log("jsRead error");
                return reject(err);
            }
            return resolve(JSON.parse(response));
        });
      });
    
    }
    
    router.get('/book/:id',function(req, res){
        var bookId =  parseInt(req.params.id);
    
        jsRead().then(function(ret){
         
    
          for(var i = 0; i < ret.length; i++){
            if(parseInt(ret[i].id) === bookId){
              res.json(ret[i]);
            }
          }
    
          res.json({message:'Kitap ID bulunamadı.'});
    
        }).catch(function(err){
          console.log(err);
        });
    
    });
    
    app.use('/api',router);
    
    
    app.listen(port);
    console.log('Server '+port+' portu üzerinde çalışmaya başladı!');
    Kodlarım genel olarak bu şekilde.

    http://localhost:4000/api/book/1 yoluna GET isteği attığımda komut satırında hat alıyorum: Can't set headers after they are sent

    Saatlerdir bu hatayı çözemedim. Promise olarak then ve catch kısımlarını kullanıyorum. Hata olduğunda catch bloğu çalışması lazım ancak then ve catch kısımları aynı anda çalışıyor
  • 01-10-2018, 01:09:11
    #2
    Teranit adlı üyeden alıntı: mesajı görüntüle
    40. satirda siz json gonderdikten sonra orada durmuyor, 44. satirda tekrar gondermeye calisiyor.
    Teşekkürler hocam. Hiç görmemişim orayı. Gözümden kaçmış.
    Dosya değişiyor hocam aslında. Kodlarım arasında ekleme, güncelleme, silme vs. var. O yüzden promise kullandım.
    Teşekkürler tekrar