2012-07-25 104 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

相关问题