couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From John <john.mg.al...@gmail.com>
Subject Re: JSON arrays in CouchDB
Date Sat, 30 Mar 2013 18:32:01 GMT
ah sorry, I'm doing a pull replication from a CouchDB to TouchDB on
android. So the filter is running on CouchDB. Don't think it's possible to
do a  pull replication with the filter on TouchDB


On 30 March 2013 17:21, Robert Newson <rnewson@apache.org> wrote:

> Oh, you said you were using CouchDB at the start of this.
>
> B.
>
> On 30 March 2013 17:12, John <john.mg.allen@gmail.com> wrote:
> > That makes sense, I thought (hoped) that the filter function just ignored
> > them.
> >
> > I'm using an android client (TouchDB) to do a filtered replication. Soon
> as
> > I have any mention of docs.countries in the filter function it fails to
> > replicate. I get an IOException error, which I assume is due to the fact
> > docs.countries is failing and causing nothing to get replicated. If I
> > filter on docs.expiryDate alone it works.
> >
> >
> > On 30 March 2013 16:59, Robert Newson <rnewson@apache.org> wrote:
> >
> >> You'll need guard clauses for the presence of the countries field,
> >> design documents get replicated too :)
> >>
> >> You haven't specified what isn't working afaict. Can you clarify?
> >>
> >> B.
> >>
> >> On 30 March 2013 16:45, John <john.mg.allen@gmail.com> wrote:
> >> > Yes all docs (apart from the design docs) have the countries field,
> and
> >> it
> >> > always has atleast one entry. Would the fact expriyDate can sometimes
> be
> >> > set to null be an issue? Although the only working filter function
> I've
> >> > been able to create so far is with expiryDate.
> >> >
> >> > I tried your sample code and still can't get it to work, even with
> some
> >> > variations. I'm currently installing CouchDB on my desktop, as I'm
> >> assuming
> >> > then atleast I'll get access to the error logs, as iriscouch, which im
> >> > currently using doesn't provide them for free accounts
> >> >
> >> >
> >> > On 30 March 2013 15:27, Robert Newson <rnewson@apache.org> wrote:
> >> >
> >> >> do *all* docs have a "countries" field? You'll be throw exceptions
> for
> >> >> docs that don't. Also, a filter function is expecting true/false
> >> >> responses. Something more like;
> >> >>
> >> >> function(doc, req) {
> >> >>   if (!doc.expiryDate) return false;
> >> >>   if (!doc.countries) return false;
> >> >>   if (!req.query.today) return false;
> >> >>   if (!req.query.country) return false;
> >> >>
> >> >>   return doc.expiryDate > req.query.today &&
> >> >> doc.countries.indexOf(req.query.country) !== -1;
> >> >> }
> >> >>
> >> >> On 30 March 2013 14:44, John <john.mg.allen@gmail.com> wrote:
> >> >> > How does CouchDB handle JSON arrays? I'm trying to create a filter
> for
> >> >> > selective replication and I've tried everything to try and iterate
> >> >> through
> >> >> > the contents of an json array to check the contents but nothing
> seems
> >> to
> >> >> > work. My code is:
> >> >> >
> >> >> > function (doc, rec) {
> >> >> > if (doc.expiryDate == null &&
> >> doc.countries.indexOf(rec.query.country) !=
> >> >> > -1) {
> >> >> >     return doc;
> >> >> > } else {
> >> >> >     var expiry = doc.expiryDate;
> >> >> >     if (expiry > rec.query.today
> >> >> > && doc.countries.indexOf(rec.query.country) != -1) {
> >> >> >         return doc;
> >> >> >     }
> >> >> > }}
> >> >> >
> >> >> > And the JSON looks like:
> >> >> >
> >> >> >
> >> >> > "countries": [
> >> >> >    "GB",
> >> >> >    "US"],
> >> >> >
> >> >> > I've ran out of ideas of how to get this working now, although
I'm
> >> sure
> >> >> the
> >> >> > problem is "doc.countries"
> >> >>
> >>
>

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