2017-05-28 197 views
0

我正在嘗試編寫代碼以使用express.js創建mongodb條目。但是,當我用cURL請求測試我的代碼時,出現錯誤「來自服務器的空響應」。Express JS POST請求失敗

這裏是我的express.js代碼:

var express = require('express'); 
var router = express.Router(); 
var http = require('http'); 
var url = require('url'); 
var util = require('util'); 
var bodyParser = require('body-parser') 
var ObjectID = require('mongodb').ObjectID; 

router.use(bodyParser.json()); 
router.use(bodyParser.urlencoded({extended: true})); 

var mongoose = require('mongoose'); 
mongoose.connect('mongodb://localhost/my_db'); 

var channelSchema = mongoose.Schema({ 
    name: String, 
    verified: String, 
    private: String, 
    channelID: String, 
    handle: String, 
    subscribers: String 
}); 

var Channel = mongoose.model("Channel", channelSchema); 
router.post('/createChannel', bodyParser, function(req, res, next) { 
    if(!req.body) return res.send(400); 
    var objID = new ObjectID(); 

    var newChannel = new Channel({ 
     name: req.body["name"], 
     verified: req.body["verified"], 
     private: req.body["private"], 
     channelID: objID, 
     handle: req.body["handle"], 
     subscribers: req.body["subscribers"] 
    }); 

    newChannel.save(function(err, point){ 
     if(err) res.send(500); 
     else res.send(200); 
    }); 

}); 

module.exports = router; 

爲什麼請求失敗,我不知道......它總是超時。它與我提供的HTTP響應有關嗎?

+0

你爲什麼要定義兩次中間件?你有'router.use(bodyParser.json());'然後你也傳遞'bodyParser'的請求。 –

+0

您如何測試?你的cURL是什麼? –

+1

這不是失敗,它只是說「空洞的迴應」。這是正確的,因爲你發送了一個響應,但它是空的。發送你的觀點:'res.status(200).send(point)' –

回答

0

這不是失敗,它只是說「空的迴應」。這是正確的,因爲你發送了一個響應,但它是空的。請將您的意見寄回:res.status(200).send(point)或更好,res.status(200).json(point)