couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sebastian Rothbucher <sebastianrothbuc...@googlemail.com>
Subject Re: map function with a helper function
Date Mon, 05 Jan 2015 18:41:35 GMT
Hi Mic,

the general misconception here seems to be that "this" within map refers to
the design doc, i.e. you'd have to have "chr" w/in the design doc - which
is not the case in the example you have given.
I think it would help to explain what you want to achieve with "judge" in
the first place...

Regards
     Sebastian

On Thu, Jan 1, 2015 at 6:06 AM, Mic <mictadlo@gmail.com> wrote:

> Hi Sinan,
> Thank you for the links and your suggestions. However, I did not quite
> understand your suggestions and I tried this map function which did not
> work:
>
>     function(doc) {
>         var judge = function (no1, no2) {
>             var unexpect = "X";
>             var letter1 = unexpect, letter2 = unexpect;
>             for (var i in this.chr) {
>                 var chr = this.chr[i];
>                 if (chr.no == no1) {
>                     letter1 = chr.letter;
>                 } else if (chr.no == no2) {
>                     letter2 = chr.letter;
>                 }
>             }
>             if (letter1 != letter2 && letter1 != unexpect && letter2
!=
> unexpect) {
>                 return true;
>             }
>             return false;
>         };
>
>
>       emit(judge(n1, n2), doc);
>     }
>
> Could you please explain your ideas a little more?
>
> Thank you in advance.
>
> Mic
>
> On Wed, Dec 31, 2014 at 10:57 PM, Sinan Gabel <sinan.gabel@gmail.com>
> wrote:
>
> > Hi!
> >
> > You may want to take a look at the basics here:
> > http://docs.couchdb.org/en/latest/couchapp/views/index.html and Cloudant
> > has some interactive samples at:
> > https://cloudant.com/for-developers/all_docs/
> >
> > *Using map*: You may want to emit the letters and use keys to find the
> > docs.
> >
> > *Not using map*: Name each doc something "smart", and use keys to find
> the
> > docs.
> >
> > Br,
> > Sinan
> >
> > On 31 December 2014 at 13:05, Mic <mictadlo@gmail.com> wrote:
> >
> > > Hi,
> > > I tried to create a map function which should use the following
> > conditions:
> > >
> > >  - e.g. chr.no = 5 and chr.no = 6
> > >  - chr.letter between two objects/dicts in chr are not the same and no
> X
> > >
> > > I have the following function but I do not know how to combine it with
> > > `emit`
> > >
> > >     var judge = function (no1, no2) {
> > >         var unexpect = "X";
> > >         var letter1 = unexpect, letter2 = unexpect;
> > >         for (var i in this.chr) {
> > >             var chr = this.chr[i];
> > >             if (chr.no == no1) {
> > >                 letter1 = chr.letter;
> > >             } else if (chr.no == no2) {
> > >                 letter2 = chr.letter;
> > >             }
> > >         }
> > >         if (letter1 != letter2 && letter1 != unexpect && letter2
!=
> > > unexpect) {
> > >             return true;
> > >         }
> > >         return false;
> > >     };
> > >
> > >
> > > CouchDB has the below content:
> > >
> > >
> > >     {
> > >       "total_rows":5,
> > >       "offset":0,
> > >       "rows":[
> > >         {
> > >           "_id":"10",
> > >           "_rev":"3-5288068d2c4ef3e6a9d3f8ff4e3377dd",
> > >           "chr":[
> > >             {
> > >               "letter":"T",
> > >               "no":4
> > >             },
> > >             {
> > >               "letter":"A",
> > >               "no":5
> > >             },
> > >             {
> > >               "letter":"X",
> > >               "no":6
> > >             }
> > >           ]
> > >         },
> > >         {
> > >           "_id":"14",
> > >           "_rev":"3-21300d06c31224416b8ff71b71b304d8",
> > >           "chr":[
> > >             {
> > >               "letter":"T",
> > >               "no":4
> > >             },
> > >             {
> > >               "letter":"G",
> > >               "no":5
> > >             },
> > >             {
> > >               "letter":"G",
> > >               "no":6
> > >             }
> > >           ]
> > >         },
> > >         {
> > >           "_id":"7",
> > >           "_rev":"2-1516ba547bdd21724158bc854f39f66b",
> > >           "chr":[
> > >             {
> > >               "letter":"C",
> > >               "no":5
> > >             },
> > >             {
> > >               "letter":"T",
> > >               "no":6
> > >             }
> > >           ]
> > >         },
> > >         {
> > >           "_id":"8",
> > >           "_rev":"2-750078ccc9e74616f33a2537e41b8414",
> > >           "chr":[
> > >             {
> > >               "letter":"C",
> > >               "no":5
> > >             },
> > >             {
> > >               "letter":"T",
> > >               "no":6
> > >             }
> > >           ]
> > >         },
> > >         {
> > >           "_id":"9",
> > >           "_rev":"2-3d68352a2d98c56fd322ae674fb7c38a",
> > >           "chr":[
> > >             {
> > >               "letter":"A",
> > >               "no":5
> > >             },
> > >             {
> > >               "letter":"G",
> > >               "no":6
> > >             }
> > >           ]
> > >         }
> > >       ]
> > >     }
> > >
> > > How is it possible to write a map function combine with the above
> `judge`
> > > function or maybe there is better way to do it?
> > >
> > > P.S. I also asked the same question here (
> > >
> > >
> >
> http://stackoverflow.com/questions/27688196/map-function-with-a-helper-function-in-couchdb
> > >  )
> > >
> > > Thank you in advance.
> > >
> > > Mic
> > >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message