[ https://issues.apache.org/jira/browse/COUCHDB-802?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Chris Anderson closed COUCHDB-802. ---------------------------------- Resolution: Fixed applied in r955389 Thanks everyone. I changed the patch slightly on the way in, so it adds a req.uuid to every request. This way the "hello" test isn't busted. > Doc ID should auto-generate if not provided, before sending to _update > function [PATCH] > --------------------------------------------------------------------------------------- > > Key: COUCHDB-802 > URL: https://issues.apache.org/jira/browse/COUCHDB-802 > Project: CouchDB > Issue Type: Bug > Components: HTTP Interface, JavaScript View Server > Affects Versions: 0.11 > Environment: Linux > Reporter: Jason Smith > Priority: Minor > Fix For: 0.11.1 > > Attachments: COUCHDB-802-with-test.diff, > COUCHDB-802-with-test_take2.diff, COUCHDB-802-with-test_take3.diff, > new_id.diff > > Original Estimate: 24h > Remaining Estimate: 24h > > The main bug is this: _show and _update functions should be able to mimic the > standard HTTP/JSON API. A common pattern people are moving to is rewriting to > _show and _update, so the client thinks it is hitting normal couch, however > additional logic happens (e.g. auto-timestamping). > Unfortunately, _update cannot return an auto-generated ID for POST to > /db/_design/ddoc/_update. The semantics should match POST to /db/ -- If an > _id is provided, use that; otherwise auto-generate one. The best an _update > function can do now is Math.random() or similar; however one loses the > advantage of sequential UUID generation from couch's internals. > The fix is for couch to send a random UUID if the update URL did not include > the final /Id component. The function itself in the view server can decide > whether to use it. Assuming that change, the update function could at least > be capable of duplicating the direct API using the following Javascript logic: > function(doc, req) { > if(doc && doc._id == req.id) { > // To be pedantic, I could confirm req.method == "PUT" > log("I am an update by id"); > } else if(doc === null && req.id) { > if(req.method == "POST") { > log("I am a create, id was auto-generated"); > } else if(req.method == "PUT") { > log("I am a create, id was supplied by client"); > } > } > } -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.