2016-05-20 8 views
1

Ich habe ein angularJS-Frontend mit $ Ressource, um Anfragen mit HTTP-Methoden an meinen Go-Server zu senden. Ich möchte einen vorhandenen DB-Eintrag aktualisieren, wenn ich einen PATCH sende. Ich muss dem GO-Server mehrere Datenfelder liefern. Wie sollte der angularJS Client die Daten in welchem ​​Format senden? Aus dem mgo doc habe ich den folgenden Code zum updaten gefunden. Ist es möglich, dass das Update-Feld eine Go-Struktur übernimmt, die von Daten, die vom Client empfangen werden, analysiert wird und die leeren Felder überspringt?Golang + mgo - Wie aktualisiert man ein db Dokument?

 change := mgo.Change{ 
      Update: bson.M{"$inc": bson.M{"n": 1}}, 
      Upsert: false, 
      Remove: false, 
      ReturnNew: true, 
     } 
     info, err = col.Find(M{"_id": id}).Apply(change, &doc) 
     fmt.Println(doc.N) 

Mein AngularJS Code, wo ich plane, um die Daten als Abfrage zu senden.

  UpdateOneSchedule.update({bkresources:dbResources}, 
      function(data){ 
       //on success 
      }, 
      function(httpResponse){ 
       //on error 
       if(httpResponse.status === 409){ 
       } 
      }); 

Antwort

1

Ja, es ist möglich. Ein einfaches Beispiel wäre:

var myStruct struct { 
    Name string `json:"name" bson:"name,omitempty"` 
    Age int `json:"age" bson:"age"` 
} 

Sie analysieren Ihre Daten in myStruct und geben das gleiche Objekt zu aktualisieren.

change := mgo.Change{ 
    Update: bson.M{"$inc": bson.M{"n": 1}, "$set": bson.M{"name": myStruct.Name}}, 
    Upsert: false, 
    Remove: false, 
    ReturnNew: true, 
} 
info, err = col.Find(M{"_id": id}).Apply(change, &doc) 
fmt.Println(doc.N) 

,omitempty die gleiche Art und Weise arbeiten, wie es mit JSON funktioniert, das heißt, wenn es leer ist wird es nicht analysiert erhalten, Beispiel:

myStruct.Name = "" 
myStruct.Age = 23 
col.Insert(myStruct) 

Dies würde erstellen Sie das folgende BSON Dokument:

{ 
    id: ObjectId("573da7dddd73171e42a84045"), 
    age: 23 
} 
+0

könnten Sie erklären, was $ set und $ inc tun? Ich kann keine Dokumentation dafür finden. –

+0

'$ inc' erhöht die Felder' n' um 1, '$ set' setzt die Werte der Felder. Ich habe gerade einen Fehler im Code erkannt, ich werde ihn bearbeiten. Relevante Dokumente: https://docs.mongodb.com/manual/reference/operator/update/set/ und https://docs.mongodb.com/manual/reference/operator/update/inc/ –

Verwandte Themen