2016-12-11 3 views
0

My REST API erlauben dem Benutzer zu entscheiden, wie sie ein Element suchen möchten. Sie haben zwei Optionen, eine Standard und eine zweite Option.dynamisch den Lookup-Schlüssel in einem Mongo findOne setzen

Die URL würde wie folgt aussehen:?

/item/{id}

Optional kann der Benutzer eine 'Abfrage' Pass auf Antrag dh

/item/{id} key = sku

Ich benutze Node.js, restify und mongoJS. Ich versuche, den „Schlüssel“ in der Abfrage dynamiclly wie folgt festgelegt:

// default lookup is always id 
    var queryKey = '_id'; 

    // if the optional 'via' query is set to sku change the lookup key 
    if(viaVal === 'sku'){ 
     queryKey = 'sku' 
    } 

    mongo.idpool.findOne({queryKey: id}, 

Dies führt zu einer „illegalen Zugriff“ Fehlermeldung, wenn ich Debuggen bin und funktioniert nicht.

  • Was ist die Ursache dafür?
  • Was ist der richtige Weg, dies zu erreichen?

Antwort

1

Sie müssen die computed property name Syntax verwenden, wenn durch sie umgebende in eckigen Klammern eine Variable als Eigenschaftsnamen verwenden:

mongo.idpool.findOne({[queryKey]: id}, ... 
+1

Danke für die Antwort und teilen den Link. Ich habe versucht, es zu googeln, aber ich wusste nicht, "berechneter Name der Eigenschaft" war der Begriff, nach dem gesucht wurde. Danke noch einmal! – Cyph

Verwandte Themen