这是我的第一个问题,我在编码方面没有太多经验,所以请耐心等待。谢谢!
我在Bluemix Cloudant帐户中使用具有不同特征的不同汽车定义了一些文档。我想从IOS Swift前端应用程序中获取一个条目。
这是一个示例查询网址: HTTPS:?//$ACCOUNT-bluemix.cloudant.com/cars/_design/car_index/_search/car_index_name Q =大小:小
现在问题:如果我在浏览器中使用此URL,我会以JSON格式返回正确的结果而不会出现任何错误。但是,如果应用程序发出请求,则会在请求本身似乎成功时记录函数子句错误。
我读到一个function_clause错误是由Javascript Cloudant用于索引文档的一些错误引起的。我正在使用的Javascript与Cloudant在教程中声明的相同。
有谁知道为什么它在浏览器中有效但在应用程序中无效? 非常感谢您的帮助!
以下是所有代码:
这是我在swift中用来发出请求的方法:
This is JSON Response {
error = "unknown_error";
reason = "function_clause";
ref = 1944801346;
}
这是JSON答案的回复:
Optional(<NSHTTPURLResponse: 0x6080000349c0> { URL: https://$ACCOUNT-bluemix.cloudant.com/cars/_design/car_index/_search/car_index_name?q=size:small } { status code: 500, headers {
"Cache-Control" = "must-revalidate";
"Content-Length" = 70;
"Content-Type" = "application/json";
Date = "Thu, 24 Nov 2016 04:41:03 GMT";
Server = "CouchDB/2.0.0 (Erlang OTP/17)";
"Strict-Transport-Security" = "max-age=31536000";
Via = "1.1 lb1.bm-cc-dal-01 (Glum/1.31.3)";
"X-Cloudant-Backend" = "bm-cc-dal-01";
"X-Content-Type-Options" = nosniff;
"X-Couch-Request-ID" = 51e5e0b5e1;
"X-Couch-Stack-Hash" = 1944801346;
"X-CouchDB-Body-Time" = 0;
如果有用的话,来自http标头的其余日志:
function (doc) {
index("name", doc.name, {"store": true});
if (doc.fuel){ index("fuel", doc.fuel, {"store": true});}
if (doc.interior){ index("interior", doc.interior, {"store": true});}
if (doc.size){index("size", doc.size, {"store": true});
}}
最后但并非最不重要的是我在Cloudant的设计文档中用作索引的Javascript文件:
[symfony\component\debug\exception\fatalthrowableerror]
call to undefined method illuminate\database\schema\blueprint::textarea<>
答案 0 :(得分:0)
我认为这个错误是由于cloudant尝试将您传递的任何内容解析为\(credentials)
作为base64编码的字符串。如果\(credentials)
不是有效的base64编码字符串(例如,包含a-z
,A-Z
,0-9
,+
,/
和{以外的字符{1}}),然后我的猜测是cloudant的base64解码函数因上述错误而失败。
您需要确保=
是正确编码的字符串\(credentials)
。例如。如果您的用户名为<your_username>:<your_password>
且密码为john
,则doe
应为\(credentials)
。