2016-09-29 3 views
0

Ich bin das Objekt in Mongo db auf Server-Seite einfügen mit Knoten js und Express js Rahmen und konfrontierte Seite ich bin der Winkel js.But werfen es ist der Fehler dass MongoError: key $ get darf nicht mit '$'

server.js

app 
.use(bodyParser.json()) 
.post('/contact', upload.single('file'), function(req,res){ 


      var contact = req.body; 
      delete contact.$promise; 
      delete contact.$resolved; 
      console.log(contact); 
      //console.log(req.file); 

      contact.userId = 1; 

      db.collection(CONTACTS_COLLECTION).insertOne(contact, function(err, doc) { 
       if (err) { 
        console.log(err + " Unsuccess"); 
       } else { 
        console.log(doc.ops[0]); 
        res.status(201).json(doc.ops[0]); 
       } 
       }); 

}) 

Anzeigewert des Kontakts an Konsole starten

{ firstName: 'abc,text', 
lastName: 'abc,text', 
toJSON: 'function(){var a=v({},this);delete a.$promise;delete a.$resolved;return a}', 
'$get': 'function (a,b,d){x(a)&&(d=b,b=a,a= {});a=m[c].call(this,a,this,b,d);return a.$promise||a}', 
'$save': 'function (a,b,d){x(a)&&(d=b,b=a,a={});a=m[c].call(this,a,this,b,d);return a.$promise||a}', 
'$query': 'function (a,b,d){x(a)&&(d=b,b=a,a={});a=m[c].call(this,a,this,b,d);return a.$promise||a}', 
'$remove': 'function (a,b,d){x(a)&&(d=b,b=a,a={});a=m[c].call(this,a,this,b,d);return a.$promise||a}', 
'$delete': 'function (a,b,d){x(a)&&(d=b,b=a,a={});a=m[c].call(this,a,this,b,d);return a.$promise||a}', 
'$update': 'function (a,b,d){x(a)&&(d=b,b=a,a={});a=m[c].call(this,a,this,b,d);return a.$promise||a}' } 

Fehler

MongoError: key $get must not start with '$' Unsuccess

Danke im Voraus

+0

i speichern wollen nur den Wert von Vor- und den Nachnamen in der Datenbank – VishalPethani

Antwort

0

sind ernst speichern Sie die gleiche Kontakt wollen, die in der Konsole angezeigt wird? mit all dem $ -Befehl? oder wird es unerwünscht angehängt? Welches Objekt senden Sie von Ihrem Frontend?

Als Antwort für mongoDB $ ist ein reserviertes Schlüsselwort, und es sollte nicht innerhalb der Schlüssel des Dokuments verwendet werden Sie versuchen, zu speichern. Wenn sie $ in Schlüsseln zulassen, würden die Abfragen fehlschlagen, da Mongo $ -Schlüsselwörter mit speziellen Zwecken verwendet, außerdem wäre es eine Sicherheitsbedrohung ähnlich der SQL-Injektion.

Als eine Lösung, wenn Sie wirklich den Kontakt mit den gleichen Daten speichern möchten, würde ich vorschlagen, $ get mit Get oder _get und ähnlich alle Schlüssel mit $ Schlüsselwort ersetzen.

Dank

+0

ok obige Problem ist lösen ... und eine andere ist ich req.body Wert und req.file in Kontakt speichern möchten ... Gibst du mir eine Lösung? – VishalPethani

+0

Wenn Ihr request.file eine Datei ist, ist es nicht in derselben Sammlung speichern gewünscht, könnten Sie Mongo gridfs Lösung sehen möchten, wo es Dateien als Chunk und Metadaten speichert –

+0

In einer Kontakt Sammlung, einen Datensatz haben eine Datei, und ich will den Datensatz und die Datei auf der Webseite abrufen, wenn die Anfrage kommt. Wie kann ich diese Datei mit einer bestimmten ID verknüpfen? Kurz gesagt, ich möchte die Datei in einem Datensatz speichern, so wie wir es in der MySQL-Datenbank tun – VishalPethani

Verwandte Themen