incubator-couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Shenouda Bertel <shenou...@gmail.com>
Subject Re: Getting attachments by custom field
Date Thu, 30 Dec 2010 10:46:07 GMT
Hallo,

 you can also add a new property named "contract_docs" as array to have all
the contracts attachment names.

Best Regards,
Shenouda Bertel

On Wed, Dec 29, 2010 at 7:55 PM, Svein Helge Grinden <
svein.helge.grinden@gmail.com> wrote:

> Hi
>
> If I create my own object/field I would loose the possibility for
> standalone
> attachments.
> I will not be able to update attachments without also updating the document
> holding the attachments.
>
>
>
> On 29 December 2010 18:42, Robert Newson <robert.newson@gmail.com> wrote:
>
> > The _attachments object is reserved for CouchDB internal usage and
> > does not permit extra fields. Use a custom object of your own with the
> > same keys;
> >
> > {
> >  "_attachments" : { "foo" : { ... whatever ... }},
> >  "attachments":" {"foo": { "type":"invoice" }}
> > }
> >
> > then attachments["foo"] == "invoice".
> >
> > B.
> >
> > On Wed, Dec 29, 2010 at 5:38 PM, Svein Helge Grinden
> > <svein.helge.grinden@gmail.com> wrote:
> > > Hi
> > >
> > > I was wondering if there is possible to add a custom field to an
> > attachment.
> > >
> > > Scenario:
> > > I have documents with attachments of different types(invoice, contract,
> > > confirmation etc.).
> > > Example:
> > >
> > > {
> > >   "_id": "5fdf72a5c03d4b3f89f55e63db002126",
> > >   "_rev": "3-ec0d8a43dbd068be752b0528f1a199e7",
> > >   "type": "order",
> > >   "customerid": "123",
> > >   "orderid": "0001",
> > >   "_attachments": {
> > >
> > >       "doc1.txt": {
> > >           "content_type": "text/plain",
> > >           "revpos": 2,
> > >           "length": 10134,
> > >           "stub": true
> > >       },
> > >       "doc2.txt": {
> > >
> > >           "content_type": "text/plain",
> > >           "revpos": 2,
> > >           "length": 10134,
> > >           "stub": true
> > >       }
> > >
> > > }
> > >
> > > Then I would want to list documents by type for a specific order.
> > >
> > > 1. My first approach was this:
> > >
> > > function(doc) {
> > > var invoice = "invoice_";
> > >  if (doc._attachments) {
> > > for (var i in doc._attachments)
> > > {
> > > if(i.substring(invoice.length, 0) == invoice)
> > > {
> > >     emit(doc.orderid, doc);
> > > }
> > >   }
> > >  }
> > > }
> > >
> > > The solution above would demand that I name every attachment in
> > > a specific way with the type as the first part of the name.
> > >
> > > 2. My second approach was to store every attachments as "normal
> documents
> > > and connect them by key. That would mean having orderid on every
> > attachment.
> > >
> > > function(doc) {
> > >  if (doc.type == "invoice")
> > >  {
> > > emit(doc.orderid, doc);
> > >  }
> > > }
> > >
> > > This approach would be more RDBMS like.
> > >
> > > 3. What I was hoping was possible was to have my own custom field on
> the
> > > attachments so the view would look like this.
> > >
> > > function(doc) {
> > >  if (doc._attachments) {
> > > for (var i in doc._attachments)
> > > {
> > > if(i.type == "invoice")
> > > {
> > >     emit(doc.orderid, doc);
> > > }
> > >   }
> > >  }
> > > }
> > >
> > > I have tried to add custom fields to an attachment by they are removed
> on
> > > save.
> > >
> > >
> > > I would like to hear your opinion about the different approaches and
> what
> > > you would do to solve this scenario.
> > >
> > > Regards,
> > > Svein Helge
> > >
> >
>



-- 
   Shenouda Bertel

ShenoudaB@Gmail.com

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