2016-08-04 4 views
-2

Hallo ich versuche, ein Objekt in einer JSON-Datei zu löschen, aber es funktioniert nicht. Ich setze den Wert p gleich dem gesamten Gegenstand, der die Werte Name, Datum und Nummer enthält. Wenn ich lösche, um das spezifische Element aus der JSON-Datei zu löschen, wird es nicht gelöscht. Ich habe mich gefragt, ob einer von euch wüsste warum. Vielen Dank.So löschen Sie ein Element in der JSON-Datei

hier ist der NodeJS Code

app.get('/testtwilio3', function(req,res,next){ 

     var fs = require('fs'); 
     var configFile = fs.readFileSync('./Public/patients.json'); 
     var config = JSON.parse(configFile); 
     var p = {name: req.query.name, date: req.query.date, number: req.query.number}; 
     var key = p; 
     console.log(p); 
     delete config[key]; 
     console.log(config); 
    }); 

Hier ist der Code von der Steuerung

$scope.deleteName = function($index){ 

    var patient = { 
      name: $scope.patients[$index].name, 
      date: $scope.patients[$index].date, 
      number:$scope.patients[$index].number 
     } 
$http.get('/testtwilio3', {params: {name: patient.name, number: patient.number, date: patient.date}}) // PASS THE DATA AS THE SECOND PARAMETER 
    .success(
     function(success){ 
      alert("work"); 
      console.log(success) 
     }) 
    .error(
     function(error){ 

      console.log("error" + error) 
     }); 


    } 

Hier wird die JSON-Datei

[{"name":"John","date":"12/22/2016","number":"781314454"},{"name":"Joe","date":"09/15/2016","number":"7892834640"},{"name":"Mike","date":"08/25/2016","number":"6472329224"},{"name":"Mark","date":"08/06/2016","number":"7819231279"}] 

Hier ist das, was die Konsole angezeigt wird, ist. Die erste Zeile ist das, was ich gelöscht werden möchte und die darunter liegenden Zeilen sind das Array von Elementen.

{ name: 'Mark', date: '08/06/2016', number: '7819231279' } 

[ { name: 'John', date: '12/22/2016', number: '781314454' }, 
    { name: 'Nikhilesh Singh', 
    date: '09/15/2016', 
    number: '7892834640' }, 
    { name: 'Mike', date: '08/25/2016', number: '6472329224' }, 
    { name: 'Mark', date: '08/06/2016', number: '7819231279' } ] 

Dies ist, wie ich es möchte, wo das Element in der ersten Zeile hat Form die Liste der Elemente entfernt worden

{ name: 'Mark', date: '08/06/2016', number: '7819231279' } 

[ { name: 'John', date: '12/22/2016', number: '781314454' }, 
    { name: 'Nikhilesh Singh', 
    date: '09/15/2016', 
    number: '7892834640' }, 
    { name: 'Mike', date: '08/25/2016', number: '6472329224' } ] 

Antwort

2

[EDITED]

Der delete Operator ist nur eine Eigenschaft von einem Objekt zum Löschen. Ihre config Variable enthält ein Array von Objekten, so delete wird nicht tun, was Sie überhaupt wollen.

Sie müssen sich durch die config Array zu durchlaufen und so etwas wie splice verwenden, um die Array-Elemente zu löschen, die die gleichen name, date und number Werte wie im Antrag haben.

This related question könnte hilfreich sein.

+0

Bitte geben Sie in Ihrer Frage: den Inhalt von './Public/patients.json', was Sie tatsächlich in Ihrem Konsolenprotokoll erhalten, und was Sie erwarten das Ergebnis zu sehen mögen. Ohne diese Information musste ich viele Vermutungen anstellen. was du versuchst zu tun. – cybersam

+0

gerade aktualisiert es – srsxyz

+0

Das klingt wie eine plausible Lösung, danke – srsxyz

1

Sie nur ein einziges Attribut mit delete (zB delete <attrName>) löschen können . Wenn Sie mehrere Attribute löschen möchten, können Sie beispielsweise lodashs omit verwenden.

Hoffe, das hilft.

+0

Ich sehe mir das an danke – srsxyz

Verwandte Themen