Wow shame on me, many apologizes for the delay in my reply.
@Harry
Thanks a lot for the pointer, I didn't know that I was able to hook into the 
datbase-change event, I definitely need to read more about the changes API, 
this is an interesting way to look at the problem.
The reason I wanted to use curl was to send a request to an external endpoint. 
Let's say, server A is the application server, and couch is on server B. When a 
certain type of change is made to a certain type of document, I want a certain 
POST request to be made to a certain server C who will know what to do with it 
- to keep couch focused on data. I'm thinking of a situation where there are a 
number of servers both in the application and the database layer (but only the 
fact that there would be a number of servers in the application layer, some of 
them having a specific purpose is relevant here).
I thought it could be interesting that Couchdb be directly able to do that, so 
that provisioning database servers is easier since there would only be CouchDb 
to install, and replication would allow to share the "script" containing the 
database call to be made easily between servers.
However if I need to poll the changes feed, I guess I'm back to square one 
since my objective was to avoid polling. But here I will need to look at the 
documentation first :)
@Johs
Thanks a lot for sharing this, this is gold !Even though I'm using CouchDb in a 
3-tiers infrastructure (we're not ready for couchapps - yet ! - as a business), 
and I don't like mixing concerns and putting application logic in the database 
- things like POST triggers are as far I'm ready to go - for now :) -I can see 
that besides these details there are two bottom lines in what you say : either 
enhancing the CouchDb API to fit my needs, or running an OS daemon and keeping 
the configuration stuff as JSON to take advantage of the replication features 
of Couch (hopefully I understood your point properly). 
The first one seems like an overkill I'm afraid considering my modest needs, 
and the second one takes me back to polling the changes feed (the point it to 
avoid polling) and making node provisioning a bit more difficult :/ (But 
besides that, you opened my eyes on possibilites for other matters that I find 
really cool). I'll keep studying this 2nd point: if I can reuse this Node.js 
thing for other purposes and end up with only CouchDb + Node.js in an image to 
suit all my needs, it might be worth it ! (But while the need doesn't go beyond 
these triggers, I think it would make the architecture overly complex to win 
almost nothing and I'd probably better stick to background jobs in the 
application layer).
Thanks again for these ideas !
@Jan
Thanks a lot Jan, this looks intriguing but extremely cool. I'm not sure it 
would help me on this particular issue based on what I said previously but it 
definitely opens up some perspectives, and help approach this class of problems 
from a different perspective. 

> Date: Thu, 19 May 2016 14:24:11 +0200
> Subject: Re: Post on Trigger
> From: [email protected]
> To: [email protected]
> 
> Hi Reddy,
> 
> your request seems to be possible for me without any change to the CouchDB
> code.
> But you may need to think in another way. For me a trigger is nothing else
> than a change of a document.
> On database-change event you can easily trigger any other script in
> dependence whether a attribute in the changed document exists or not.
> Also a view index will be updated any time a new document is stored into
> CouchDB.
> Why you want to call curl behind the scenes is not transparent to me.
> For me which urls are called in the background depends on which domain
> (dev.url, stage.url, www.url) the app was deployed.
> But it could be that I misunderstand your request. Maybe you can make it
> more clear to me what you especially want to reach?
> 
> Cheers,
> Harry
> 
> On Thu, May 19, 2016 at 1:49 PM, Reddy B. <[email protected]> wrote:
> 
> > Hi,
> >
> > I am fairly new to CouchDb and loving it so far. I think this database is
> > shockingly underated. I love the "Relax" approach and the design choices
> > that have been done, and I hope things will continue with the same
> > philosophy.
> >
> > I couldn't find if this has been discussed before but I was thinking that
> > it would be extremely cool to be able to setup triggers that POST arbitrary
> > json to arbitrary endpoints. I think this would be a killer feature if
> > there was built-in support for that - and seems to fit well with the HTTP
> > approach of couch.
> >
> > So basically, this would be about allowing us to add an arbitrary number
> > of triggers to any view. Each trigger would be called only if the view
> > emitted "something" and the trigger would receive the document passed as a
> > parameter to the view (this is to take advantage of the update frequency of
> > views) Then in terms of posting, there could be a new built-in javascript
> > function calling curl behind the scenes which can be called from the
> > triggers.
> >
> > For the same purpose, it would be interesting to introduce configuration
> > documents at the database level whose properties could be accessed from
> > these triggers (I'm thinking of situations when one would need to call a
> > different URL when in testing, staging, production etc...)
> >
> > In terms of use case, this would allow us to do things as diverse as
> > sending email notifications, and maintenance tasks. More generally, this
> > would eliminate the need for most of the maintenance jobs out there while
> > making these systems much more efficient by removing the need to run jobs
> > at arbitrary times even when this is not necessary. Also, since most web
> > frameworks are asynchronous and process each request in a different
> > thread,  this would be a way to easily parallelize certain operations.
> >
> > I just wanted to know if there was any chance to see this come out one day
> > or if this would be a "no-go" for design of philosophical reasons.
> >
> > Cheers,
> >
> > Reddy
> >
> 
> 
> 
> 
> -- 
> 
> Dipl.-Inf. Harald R. Kisch
> 
> Auenstraße 14
> 80469 München
> Germany
> 
> Tel: +49 (0) 89 41 61 58 57-6
> Mobil DE: +49 (0) 176 56 58 58 38
> 
> Skype: harald.kisch
> Mail: [email protected]
                                          

Reply via email to