2012-07-25 55 views
1

我試圖將文檔插入到CouchDB中。雖然執行此代碼的CouchDB返回以下錯誤:嘗試從Node.js將文檔插入到CouchDB時出現'bad_request invalid_json'錯誤

STATUS: 400  
BODY: {"error":"bad_request","reason":"invalid_json"}  

我的代碼:

var http = require('http') 


var options = { 
"host": "localhost", 
"port": "5984", 
"path": "/chinese", 
"headers": {"content-type": "application/json"}, 
"method": "PUT", 
"body": JSON.stringify({ 
    "_id":"rabbit", 
    "_rev":"2-c31d8f403d44d1082b3b178ebef8d329", 
    "Subject":"I like Plankton" 
}) 
}; 

var req = http.request(options, function(res) { 
    console.log('STATUS: ' + res.statusCode); 
    res.setEncoding('utf8'); 
    res.on('data', function (chunk) { 
    console.log('BODY: ' + chunk); 
    }); 
}); 

req.write('data\n'); 
req.end(); 

有什麼不對?

編輯:我需要更新數據,所以我把POST換成了PUT。

+0

這是CouchDB返回錯誤消息,而不是Node.js – 2012-07-26 07:02:47

回答

5

因爲您正在編寫'data\n'作爲您的請求的正文,而且這實際上並不是有效的JSON。

也許,你的意思是:

req.write(JSON.stringify({"data": "somedata"})); 

強似本作的選項body參數。

+0

不,前面的代碼中發生錯誤,即使我註釋掉這一行,它仍然存在。 – DSblizzard 2012-07-25 22:40:25

+1

是的,如果您註釋掉該行,也會發生這種情況。因爲你沒有發送正文,那也是無效的JSON。 因此,我建議你*用上面的代碼替換* req.write('data \ n');'行。你可以嘗試一下,而不是僅僅評論一下嗎? – 2012-07-26 07:15:18

+0

非常感謝,這個簡單的操作從我身上喝了一升血。但是我們能否以「身體」和其他選項相互融合的方式重組代碼? – DSblizzard 2012-07-26 11:13:41

相關問題