John, Short answer: No, during validation you'll need to make decisions solely based on the contents of the document and the user.
Generally speaking, all the design doc functions operate in that manner, where you can't make requests to external resources. If you're application can live within those constraints, though, CouchDB gives you quite a bit in return! When you're app constantly has to validate across multiple documents you may get the feeling you're fighting an uphill battle, given that CouchDB only provides atomicity guarantees for single-document operations. In reality, it's often "good enough" to perform some client-side application checks on your data before sending it to the database. Alternatively, you could build a backend program to monitor your data, and even build functionality for your system's expert users to rectify invalid data after-the-fact. My point however is that when deciding CouchDB (or any datastore, for that matter!) you'll need to evaluate how well your app's requirements fit within the database's constraints, and how much you'll need to build into your systems to support its operation. CouchDB works well when each independent document carries with it all the info it needs. Cheers, Zach On Fri, Jul 30, 2010 at 1:32 PM, John <[email protected]> wrote: > Hi again > > I didn't get any replies to this post so I'm going to boil it down to a > simple question which hopefully someone knows the answer to (positive or > negative!): > > Can the Design Document functions make database queries? > e.g. If the validation method is being executed and it wants to check a > referenced id, can that be done? > > Regards > > John > > Begin forwarded message: > >> From: John <[email protected]> >> Date: 26 July 2010 22:38:17 GMT+01:00 >> To: [email protected] >> Subject: Linked Documents >> >> Hi >> >> I have a Use Case where I store an Account Tree in the database. Each >> Account Node points to its parent and I can resolve the tree using several >> database queries by getting the account then its parent then its parents >> parent, I guess you get the idea! >> >> We store data as attributes in these account objects and inheritance is used >> to easily propogate attributes down the account tree and override them at >> each node as required. >> >> I've just been reading the wiki and seen a nice feature where I can emit >> index entries with foreign id's which is great if I already know them in the >> doc my map function is working on however I would prefer to just reference >> my parent and then *follow* that link to get the parent doc and retrieve >> it's parent id from there. >> >> So I guess what I'm trying to ask for here is whether I can retrieve another >> document from the database, by id, from within the map function in a view? >> I can see lots of other places in our design where this could be really >> useful especially for validation of referenced id's within documents. >> >> Thanks >> >> John > >
