On 14-Dec-08, at 4:12 PM, Chris Anderson wrote:

James,

Glad to see you getting into the code base. CouchDB is surprisingly
easy to hack on once you get familiar with the different modules.

I think in this case its best to stick to the more functional style by
explicitly passing the doc in. Especially because we'd like to be
freezing the doc.

Oh definitely, the patch doesn't remove the positional doc, it just makes the doc "this" as well.

If you're interested in scripting server side JavaScript, keep an eye
out for the _external server module which is coming into trunk soon.
It proxies http requests to a JSON server, so you can pretty easily
build JavaScript responders.

I am very interested in server side JavaScript -- basically that's what my company, Reasonably Smart, does. I'm actually looking at CouchDB as the back-end datastore. There is a bunch of stuff that I'd like to be able to do with and I'm just getting started :-)

The code is sitting in davisp's Github repo but should be moving to
trunk this week.

http://github.com/davisp/couchdb/commits/external3/ (see the last 4 commits)

That could be very useful - thanks!

Regards,
James.



Chris

On Sun, Dec 14, 2008 at 8:22 AM, James A. Duncan
<ja...@reasonablysmart.com> wrote:

I've been following CouchDB for a while, but only started playing with it
seriously very recently.

One thing I keep catching myself with is that map functions receive the document as a parameter, and I keep looking for it in 'this'. Maybe that's because I spend too much time with JavaScript, or maybe it's because I don't spend enough time with CouchDB. A one-line patch follows, that allows for
'this' to be used as well as the positional arg.

There may well be good reasons why this isn't sensible, and really it's just
sugar, but I thought I'd dive in and give it a try.

Regards,
James.

--- /Users/jduncan/oldmain.js   2008-12-14 11:04:11.000000000 -0500
+++ /opt/local/share/couchdb/server/main.js     2008-12-14
11:03:16.000000000 -0500
@@ -91,7 +91,7 @@
       for (var i = 0; i < funs.length; i++) {
         map_results = [];
         try {
-            funs[i](doc);
+            funs[i].apply(doc, [ doc ]);
           buf.push(toJSON(map_results));
         } catch (err) {
           if (err == "fatal_error") {





--
Chris Anderson
http://jchris.mfdz.com

Reply via email to