2016-03-29 8 views
1

Aynı konuyla ilgili birkaç soru okudum ama kişisel durumum için çalışmaz. Bir ng-tekrar listesinden bir girişi silmeye çalışıyorum. Hata: Gönderildikten sonra başlıklar ayarlanamıyor. Node Expressjs

Bu

Bence (ng Şekil düzenleme amaçlıdır) aşağıdaki gibidir:

<tr ng-repeat="entry in entries" ng-cloak> 
    <th>{{ $index + 1 }}</th> 
    <td> 
     <span ng-show="!editMode[$index]">{{ entry.username }}</span> 
     <input ng-show="editMode[$index]" type="text" ng-model="entry.username"/> 
    </td> 
    <td> 
     <span ng-show="!editMode[$index]">{{ entry.date }}</span> 
     <input ng-show="editMode[$index]" value="{{entry.date}}"/> 
    </td> 
    <td> 
     <span ng-show="!editMode[$index]">{{ entry.hours }}</span> 
     <input ng-show="editMode[$index]" type="text" ng-model="entry.hours"/> 
    </td> 
    <td> 
     <span ng-show="!editMode[$index]">{{ entry.payout }}</span> 
     <input ng-show="editMode[$index]" type="text" ng-model="entry.payout"/> 
    </td> 
    <td> 
     <button ng-show="!editMode[$index]" type="submit" class="btn btn-primary" ng-click="deleteEntry($index)">Delete</button> 
     <button ng-show="!editMode[$index]" type="submit" class="btn btn-primary" ng-click="editEntry($index)">Edit</button> 

     <button ng-show="editMode[$index]" type="submit" class="btn btn-primary" ng-click="saveUpdate($index)">Update</button> 
     <button ng-show="editMode[$index]" type="submit" class="btn btn-primary" ng-click="cancelUpdate($index)">Cancel</button> 

    </td> 
</tr> 

My açısal kontrol: my apiController.js olarak

// DELETE 
$scope.deleteEntry = function(id) { 
// delete entry from DB using clicked listing's id 
$http.delete('/api/entry/' + id) 
    .success(function(data) { 
     $scope.entry = data; 
    }) 
    .error(function(data) { 
     console.log('Error: ' + data); 
    }); 
// then update page with remaining entries 
$http.get('/api/entries').then(function(response){ 
     $scope.entries = response.data; 
    }); 
}; 

app.delete('/api/entry/:entry_id', function(req, res){   
    Entries.remove({ 
    _id : req.params.entry_id 
    }, function(err, entry) 
    if (err) 
     res.send(err); 

    // get and return remaining entries 
    Entries.find(function(err, entries) { 
     if (err) 
     res.send(err) 
     res.json(entries); 
    }); 
    }); 
}); 

Entries.find işlevini kaldırırım, hata gider, ancak silme çağrısı artık çalışmaz.

DB'ime bağlanmak için mongoose kullanıyorum.

Burada nelerin eksik?

+0

girdi kimliği DB'den kaldırıldı engellerle mi olursa? Kimlik kaldırılırken veya girdiler bulunurken hata atılabilir. –

+0

@DhananjayaKuppu, hayır, giriş DB'den kaldırılmıyor. Buradaki daha büyük sorun. – PanicBus

cevap

2

İki tepki dönüş blok, böylece çatışma başlıkları .....

app.delete('/api/entry/:entry_id', function(req, res){    

     Entries.remove({_id : req.params.entry_id}, 
     function(err, entry) 
     if (err){ 
      res.send(err); 
     }  //end if block 
     else{ 
     // get and return remaining entries 
     Entries.find(function(err, entries) { 
      if (err){ 
      res.send(err) 
      } 
     else{ 
      res.json(entries); 
      } 
     }); 

    } //end else block 
}); 

}); 
+1

Bu aslında hatayı çözüyor, ben de doğru cevap olarak işaretleyeceğim, ama maalesef şimdi silme yöntemim çalışmıyor! Bu farklı bir sorun olabilir. – PanicBus

+0

GÜNCELLEME: Farklı bir sorundu. Şimdi çalışıyor. Yardım için teşekkürler! – PanicBus

1

if else koşuluna yerleştirin. yanıtı gönderdikten sonra devam eder ve bu istisnaya neden olan tekrar göndermeyi deneyin.

app.delete('/api/entry/:entry_id', function(req, res){   
    Entries.remove({ 
_id : req.params.entry_id 
}, function(err, entry) 
if (err) 
    res.send(err); 

else{ 
Entries.find(function(err, entries) { 
    if (err) 
    res.send(err) 
else 
    res.json(entries); 
}); 
} 
    }); 
}); 
0

Kodunuz, istemciye bir hata yanıtı gönderir, daha sonra bir JSON yanıtı göndermeye çalışır. İlk yanıt, istek/yanıt sürecini sonlandırır, yani ikinci yanıt gönderilemez ve başlıkları, hatası gönderildikten sonra başlıkları ayarlayamaz.

Bunu çözmek için, hata işlerken her zaman return early. Bu, istek/yanıt döngüsünü sonlandırır, ardından işlevden döner, böylece takip eden kodun hiçbiri yürütülmez. Aynı içinde

if (err) return res.send(err); 
res.json(entries)