13 Stimmen

CouchDB "verbindet" zwei Dokumente

Ich habe zwei Dokumente, die in etwa so aussehen:

Doc
{
  _id: AAA,
  creator_id: ...,
  data: ...
}

DataKey
{
  _id: ...,
  credits_left: 500,
  times_used: 0,
  data_id: AAA
}

Ich möchte eine Ansicht erstellen, die es mir ermöglicht, die DataKey-ID (key=DataKey _id) zu übergeben und sowohl die Informationen des DataKey als auch des Doc zu erhalten.

Mein Versuch:

Ich habe zunächst versucht, den DataKey in das Doc einzubetten und eine Map-Funktion wie folgt zu verwenden:

function (doc)
{
  if (doc.type == "Doc")
  {
    var ids = [];
    for (var i in doc.keys)
      ids.push(doc.keys[i]._id);

    emit(ids, doc);
  }
}

Aber ich bin auf zwei Probleme gestoßen:

  1. Es können mehrere DataKey's pro Doc geben, also mit startkey=[idhere...] und endkey=[idhere..., {}] funktionierte nicht funktioniert (nur wenn der Schlüssel zufällig der erste im Array war).
  2. Alle Datenschlüssel müssen eindeutig sein, und ich würde es vorziehen, nicht ein separates Dokument wie {_id = datakey} zu erstellen, um den Schlüssel zu reservieren.

Hat jemand eine Idee, wie ich das bewerkstelligen kann? Lassen Sie mich wissen, wenn etwas unklar ist.

-----EDIT-----

Ich vergaß zu erwähnen, dass ich in meiner Anwendung nicht weiß, was die Doc-ID ist, also muss ich in der Lage sein, nach der ID des DataKey zu suchen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X