2016-08-05 17 views
0

Ich entwickle API mit Loopback + MongoDB. Indem ich habe ein Array in einem Dokument in mongoDB zu aktualisieren:Update Array in MongoDB durch meine Loopback-Anwendung

Mein Modell:

{ 
    "userId": "546fgdfgd445", 
    "rrrr": "7", 
    "bbbbb": [ 
    {} 
    ], 
    "id": "57a437789521b58b12124016" 
} 

Ich brauche das Array mit neuem Elemente mit dem Daten gesendet Form Client zu aktualisieren:

app.models.vvvvv.update({ userId: '546fgdfgd445' },{ $push: { "transactions": transactionData }}, function(err, res){ 
     if(err){ 
      console.log(err); 
     } else { 
      console.log(res); 
     } 
    }); 

Aber ich Fehler erhalte:

{ name: 'MongoError', 
    message: 'The dollar ($) prefixed field \'$push\' in \'$push\' is not valid for storage.', 
    driver: true, 
    index: 0, 
    code: 52, 
    errmsg: 'The dollar ($) prefixed field \'$push\' in \'$push\' is not valid for storage.' } 

I MongoDB Version 3.2.3 verwenden.

Bitte teilen Sie Ihre Ideen. Danke im Voraus.

+0

Was ist 'transactionData' scheint es etwas falsch mit dem ist. – Shrabanee

+0

@Shrabanee No.its perfekt .. Es ist ein Objekt ,,, Ich versuche, Objekt ({}) in das Array zu schieben .. \ – Subburaj

+0

Können Sie versuchen, dies in Mongo Shell direkt tun? Ich habe versucht, wie Sie geschrieben haben und es funktioniert gut. – Shrabanee

Antwort

0

in model.json benötigen Sie erweiterte Operationen wie diese aktivieren:?

"options": {  
    "mongodb": { 
     "collection": "model_collection", 
     "allowExtendedOperators": true 
    } 
    }, 

oder

app.models.vvvvv.update({ userId: '546fgdfgd445' }, 
{ $push: { "transactions": transactionData }}, { allowExtendedOperators: true }, function(err, res){ 
      if(err){ 
       console.log(err); 
      } else { 
       console.log(res); 
      } 
     });