2017-09-04 3 views
0

Ich habe ein ionisch/AngularJS app, dass ich versuche, die letzte Eingabe-ID eines SQLite zu bekommen, aber wie auch immer ich versuche, ich versuche und Zugriff auf die Variable in dem Objekt der Verheißung kommt zurück als undefiniert.Zugang Element aus einem Versprechen

Mein Versprechen ist;

$ionicPlatform.ready(function() { 
     $cordovaSQLite.execute(db, query, parameters) 
     .then(function (result) { 
      q.resolve(result); 
     }, function (error) { 
      console.warn('I found an error'); 
      console.warn(error); 
      q.reject(error); 
     }); 
    }); 
    return q.promise; 

Es durch genannt:

self.addPicture = function(photo) { 
    var parameters = [photo.base64]; 
    console.log("INSERT INTO AssetPhotos (id, base64) VALUES (NULL,?)", parameters); 
    var id = DBA.query("INSERT INTO AssetPhotos (id, base64) VALUES (NULL,?)", parameters); 
    return id; 
    } 

Und dann in den eigentlichen Code:

Assets.add($scope.addasset); 
    var i = 0; 
    for (pic in $scope.photos) { 
     console.log(Assets.addPicture($scope.photos[i])); 
     i++; 
    } 

Aber es gibt:

Promise {$$state: Object} 
$$state: Object 
status: 1 
value: Object 
insertId: 20 
rows: Object 
rowsAffected: 1 
__proto__: Object 
__proto__: Object 
__proto__: Promise 

(oder es leichter zu sehen)

enter image description here

Was ich versuche zu erreichen, dass die console.log (Assets.addPicture ($ scope.photos [i])) nur die insertId zurückgibt. Ich habe versucht, das Hinzufügen .value.InsertId und .InsertId aber forwhatever Grund, warum ich kann einfach nicht nur die InsertId zurück scheinen, um es

Bearbeiten zu verwenden: ich den Code der folgenden aktualisiert haben, die gut aussieht aber ich erhalte eine Fehlermeldung: Uncaught Syntaxerror: fehlt) nach Argumentliste

$scope.addAsset = function(){ 
    Assets.add($scope.addasset); 
    var i = 0; 
    for (pic in $scope.photos) { 
     Assets.addPicture($scope.photos[i]) 
     .then(res => console.log(res.insertId)) 
     i++; 
    } 
    } 

Antwort

1

Sie können nicht console.log(), um eine Rückkehr Sache Versprechen außer innerhalb eines .then. Wie ich Ihren Code verstehe, könnte dies funktionieren, oder etwas Ähnliches:

Assets.add($scope.addasset); 
var i = 0; 
for (pic in $scope.photos) { 
    Assets 
    .addPicture($scope.photos[i]) 
    .then(res => console.log(res.insertId)) // logging out here 
    i++; 
} 
+0

Das macht eigentlich viel Sinn. Danke - Noch eine schnelle Sache, die Code-Fehler mit einem Uncaught SyntaxError: fehlt) nach der Argumentliste aber die Klammern sehen gut aus für mich – TMB87

+0

wahrscheinlich extra parens woanders dann? – ehacinom

+0

, dass die offensichtliche Antwort wäre, aber ich sehe wirklich nicht, wo – TMB87

Verwandte Themen