[ 
https://issues.apache.org/jira/browse/COUCHDB-1511?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13409003#comment-13409003
 ] 

Robert Newson commented on COUCHDB-1511:
----------------------------------------

The reason for the error is that, while we test that newDoc.roles is an array 
if it's defined, we don't define it if it's absent and we then proceed to call 
newDoc.roles.length. The exception thrown here is not anticipated in the 
ddoc_prompt result, and we get a function_clause (which, as noted, is 
impenetrable to users).

The fix for couch_db_functions.hrl is something like this;

--- a/src/couchdb/couch_js_functions.hrl
+++ b/src/couchdb/couch_js_functions.hrl
@@ -31,8 +31,12 @@
             throw({forbidden: 'doc.name is required'});
         }
 
-        if (newDoc.roles && !isArray(newDoc.roles)) {
-            throw({forbidden: 'doc.roles must be an array'});
+        if (newDoc.roles) {
+            if (!isArray(newDoc.roles)) {
+              throw({forbidden: 'doc.roles must be an array'});
+            }
+        } else {
+            newDoc.roles = []
         }
 
and the fix for couch_query_servers will be to add something like;

_ ->
  throw({bad_request, "blah"})

                
> Error message provides no help: Uncaught server error: {case_clause,{[]}}
> -------------------------------------------------------------------------
>
>                 Key: COUCHDB-1511
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-1511
>             Project: CouchDB
>          Issue Type: Bug
>    Affects Versions: 1.2
>            Reporter: Isaac Z. Schlueter
>
> When PUTing a _users doc, if you forget the `roles:[]` field, you get this 
> error, which doesn't help figure out the problem at all.
> Suggestion:
> 1. _users docs should get a role:[] and type:"user" by default if these 
> fields are missing.
> 2. If there is an error in the _users doc, it should say "Invalid user 
> document", or something else indicating that the problem happened because the 
> data was bad (and not, say, because the server is crashing or views are 
> messed up, or whatever else can happen in this crazy world.)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to