In meiner Anwendung habe ich ein Formular, in dem der Benutzer mehrere Datensätze hinzufügen kann. Wenn die Seite geladen ist, muss ich eine GET-Anfrage machen, um die Datenbank auf existierende Datensätze zu überprüfen. Wenn Datensätze vorhanden sind, bevölkere ich sie auf der Seite. Kein Problem dort.
Das Problem, das ich habe, ist, wenn die DB keine vorhandenen Datensätze hat, der Server einen 204 Kein Inhalt zurückgeben. Im Controller wird die Erfolgsfunktion weiterhin ausgeführt, aber es gibt keine Daten, nur das $ promise-Objekt und $ resolved: true. Hier
ist der Code:
Factory:
return $resource (
https://my.backend/api/records/:id",
{},
{
"getExistingRecords": {
method: 'GET',
isArray: false,
params: {id: '@id'},
withCredentials: true}
}
)
Controller:
function initialize(id){
alertFactory.getExistingRecords({id: id})
.$promise
.then(function (records){
if(records){
$scope.existingRecords = records;
}else {
$scope.existingRecords = {};
}
},function(error){
Notification.error(error);
});
}
initialize(id);
Wenn der Server returns "204 No Content" Ich bekomme diese von der Konsole
Ist die einzige Möglichkeit, dies zu überprüfen, um nach Objekteigenschaften des Datensatzobjekts zu suchen?
Zum Beispiel:
function initialize(id){
alertFactory.getExistingRecords({id: id})
.$promise
.then(function (records){
if(records.recordName){
$scope.existingRecords = records;
}else {
$scope.existingRecords = {};
}
},function(error){
Notification.error(error);
});
}
initialize(id);
Oder bin ich etwas fehlt noch?
Sollte nicht 'isArray' sein' true' in Ihrem $ Ressourcendefinition? Im Falle einer leeren Antwort könnte Ihr Server dann ein leeres Array anstelle von '204 no content' zurückgeben. Zumindest die Benennung der Aktion getExistingRecords() Art schlägt vor, dass es ein Array sein sollte. –
Sie könnten immer nur überprüfen, ob Datensätze überhaupt existiert und es ist die Länge ist größer als 0 ... – theDarse