diff options
Diffstat (limited to 'share/server')
-rw-r--r-- | share/server/loop.js | 1 | ||||
-rw-r--r-- | share/server/render.js | 20 |
2 files changed, 21 insertions, 0 deletions
diff --git a/share/server/loop.js b/share/server/loop.js index 34354769..ff241eed 100644 --- a/share/server/loop.js +++ b/share/server/loop.js @@ -41,6 +41,7 @@ var dispatch = { "rereduce" : Views.rereduce, "validate" : Validate.validate, "show" : Render.show, + "update" : Render.update, "list" : Render.list, "filter" : Filter.filter }; diff --git a/share/server/render.js b/share/server/render.js index 1a9fc5a5..82ceb3ab 100644 --- a/share/server/render.js +++ b/share/server/render.js @@ -166,11 +166,16 @@ function runProvides(req) { //// //// //// + var Render = { show : function(funSrc, doc, req) { var showFun = compileFunction(funSrc); runShow(showFun, doc, req, funSrc); }, + update : function(funSrc, doc, req) { + var upFun = compileFunction(funSrc); + runUpdate(upFun, doc, req, funSrc); + }, list : function(head, req) { runList(funs[0], head, req, funsrc[0]); } @@ -212,6 +217,21 @@ function runShow(showFun, doc, req, funSrc) { } }; +function runUpdate(renderFun, doc, req, funSrc) { + try { + var result = renderFun.apply(null, [doc, req]); + var doc = result[0]; + var resp = result[1]; + if (resp) { + respond(["up", doc, maybeWrapResponse(resp)]); + } else { + renderError("undefined response from update function"); + } + } catch(e) { + respondError(e, funSrc, true); + } +}; + function resetList() { gotRow = false; lastRow = false; |