保存到couchDb时出现500内部服务器错误

时间:2015-07-07 17:56:31

标签: javascript couchdb

我正在尝试将文档保存到我的沙发数据库中。这是我用来拨打电话的代码

function splitIntoItemsThenSendItemsToCouch(dumpDoc){
  var items = dumpDoc.children[0].children[0].children;
  for(var i = 0; i < items.length; i++){
    var doc = { "_id":items[i].children[1].textContent, "_attachments": {"content_type":"text\/plain","data":window.btoa(items[i].outerHTML)}}
    db.saveDoc(doc)
  }
}

以下是我在尝试保存文档时从沙发上获取的错误日志示例。

[Tue, 07 Jul 2015 17:42:19 GMT] [error] [<0.112.0>] function_clause error in HTTP request
[Tue, 07 Jul 2015 17:42:19 GMT] [info] [<0.112.0>] Stacktrace: [{couch_doc,'-transfer_fields/2-fun-0-',
                                    [{<<"content_type">>,<<"text/plain">>}],
                                    [{file,"couch_doc.erl"},{line,227}]},
                                {lists,map,2,[{file,"lists.erl"},{line,1224}]},
                                {couch_doc,transfer_fields,2,
                                    [{file,"couch_doc.erl"},{line,227}]},
                                {couch_httpd_db,couch_doc_from_req,3,
                                    [{file,"couch_httpd_db.erl"},{line,793}]},
                                {couch_httpd_db,db_doc_req,3,
                                    [{file,"couch_httpd_db.erl"},{line,582}]},
                                {couch_httpd_db,do_db_req,2,
                                    [{file,"couch_httpd_db.erl"},{line,234}]},
                                {couch_httpd,handle_request_int,5,
                                    [{file,"couch_httpd.erl"},{line,318}]},
                                {mochiweb_http,headers,5,
                                    [{file,"mochiweb_http.erl"},{line,94}]}]
[Tue, 07 Jul 2015 17:42:19 GMT] [info] [<0.112.0>] 192.168.1.25 - - PUT /items4493/C-11034 500
[Tue, 07 Jul 2015 17:42:19 GMT] [error] [<0.112.0>] httpd 500 error response:
 {"error":"unknown_error","reason":"function_clause"}

我已经尝试了很多东西,并将继续这样做。如果您有任何类似的问题,请告诉我。 在沙发错误日志方面,我也有点文盲。我想我理解它的要点,但也许我不这样做,如果你也可以帮助我从这个日志中更有意义。 谢谢!

1 个答案:

答案 0 :(得分:0)

我很幸运,我调试这个非常快。按照https://wiki.apache.org/couchdb/HTTP_Document_API#Inline_Attachments的指示,我意识到我犯了一个愚蠢的错误。我忘了给附件本身命名。所以我修改了这行

  var doc = { "_id":items[i].children[1].textContent, "_attachments": {"content_type":"text\/plain","data":window.btoa(items[i].outerHTML)}}

进入

    var doc = {"_id":items[0].children[1].textContent, "_attachments": {"items_metadata":{"content_type":"text\/plain","data":window.btoa(items[0].outerHTML)}}}