Return-Path: X-Original-To: apmail-couchdb-user-archive@www.apache.org Delivered-To: apmail-couchdb-user-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 0550C1678 for ; Wed, 20 Apr 2011 12:11:54 +0000 (UTC) Received: (qmail 31198 invoked by uid 500); 20 Apr 2011 12:11:52 -0000 Delivered-To: apmail-couchdb-user-archive@couchdb.apache.org Received: (qmail 31167 invoked by uid 500); 20 Apr 2011 12:11:52 -0000 Mailing-List: contact user-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@couchdb.apache.org Delivered-To: mailing list user@couchdb.apache.org Received: (qmail 31158 invoked by uid 99); 20 Apr 2011 12:11:52 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 20 Apr 2011 12:11:52 +0000 X-ASF-Spam-Status: No, hits=-2.3 required=5.0 tests=RCVD_IN_DNSWL_MED X-Spam-Check-By: apache.org Received-SPF: unknown (nike.apache.org: error in processing during lookup of N.Breunese@vpro.nl) Received: from [145.58.30.184] (HELO out1a.mail.omroep.nl) (145.58.30.184) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 20 Apr 2011 12:11:43 +0000 Received: from localhost (ou1aclean [10.10.30.156]) by out1a.mail.omroep.nl (Postfix MTA - NPO ICT) with ESMTP id 6B115832636 for ; Wed, 20 Apr 2011 14:11:23 +0200 (CEST) X-Virus-Scanned: NPO ICT Received: from zeefje.vpro.nl (zeefje.vpro.nl [145.58.168.41]) by out1a.mail.omroep.nl (Postfix MTA - NPO ICT) with ESMTP id 51FBD83262C for ; Wed, 20 Apr 2011 14:11:23 +0200 (CEST) X-ASG-Debug-ID: 1303301482-0084845ad2600a70001-z14J5S Received: from mail.vpro.nl (mail.vpro.nl [145.58.171.81]) by zeefje.vpro.nl with ESMTP id LX8D3Nsgy51YFBGJ for ; Wed, 20 Apr 2011 14:11:22 +0200 (CEST) X-Barracuda-Envelope-From: N.Breunese@vpro.nl X-Barracuda-Apparent-Source-IP: 145.58.171.81 Received: from VS-EX-01.intra.vpro.nl ([145.58.171.81]) by VS-EX-01.intra.vpro.nl ([145.58.171.81]) with mapi; Wed, 20 Apr 2011 14:11:22 +0200 From: Nils Breunese To: "user@couchdb.apache.org" Date: Wed, 20 Apr 2011 14:11:20 +0200 Subject: Dealing with sealed docs Thread-Topic: Dealing with sealed docs X-ASG-Orig-Subj: Dealing with sealed docs Thread-Index: Acv/VA9vDRYeJWJHSHip3XOQiiJBOg== Message-ID: <6084E307-7CFB-4BAD-A12C-063272628B95@vpro.nl> Accept-Language: nl-NL Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: nl-NL Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Barracuda-Connect: mail.vpro.nl[145.58.171.81] X-Barracuda-Start-Time: 1303301482 X-Barracuda-URL: http://145.58.168.41:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at vpro.nl X-Barracuda-Bayes: SPAM GLOBAL 0.9098 1.0000 3.3303 X-Barracuda-Spam-Score: 3.33 X-Barracuda-Spam-Status: No, SCORE=3.33 using global scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.61403 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Checked: Checked by ClamAV on apache.org Hello all, I recently upgraded to CouchDB 1.0.2 for development and found some of our = view map functions broke. Apparently it's no longer possible to modify data= a doc in a view function before emitting. I found "Documents are now seale= d before being passed to map functions." in the changelog for 1.0.2. This is an example of a map function which no longer works under 1.0.2: ---- function(doc) { if(doc.type =3D=3D=3D 'schedule') { var events =3D doc.events; if (events) { events.forEach(function(event) { var broadcasters =3D event.broadcasters; if (broadcasters) { broadcasters.forEach(function(broadcaster) { if(broadcaster =3D=3D=3D 'VPRO') { event.channel =3D doc.channel; event.channelName =3D doc.channelName; emit(event.end, event); } }); } }); } } } ---- A colleague suggested using this: ---- events.forEach(function(e) { var event =3D eval(uneval(e)); ---- This creates a deep copy before modifying event properties. It works, but i= t looks ugly to me. Is this the way to go or is there a cleaner way? Nils. ------------------------------------------------------------------------ VPRO www.vpro.nl ------------------------------------------------------------------------