0
我有一個離子/ angularjs應用程序,我試圖獲得SQLite的最後插入的ID,但是無論我嘗試什麼方式嘗試訪問承諾的對象中的變量來回到未定義。從諾言訪問項目
我的承諾是;
$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;
它是由被稱爲:
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;
}
然後在實際代碼:
Assets.add($scope.addasset);
var i = 0;
for (pic in $scope.photos) {
console.log(Assets.addPicture($scope.photos[i]));
i++;
}
但是,它返回:
Promise {$$state: Object}
$$state: Object
status: 1
value: Object
insertId: 20
rows: Object
rowsAffected: 1
__proto__: Object
__proto__: Object
__proto__: Promise
(或看到它更容易)
我想要實現的是,執行console.log(Assets.addPicture($ scope.photos [1]))僅返回insertId。我試着加入.value.InsertId和.InsertId但forwhatever原因,我似乎無法得到公正的InsertId回用它
編輯:我已經更新的代碼下面這看起來正確之後的參數列表
$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++;
}
}
這實際上是很有道理的。謝謝 - 更多快速的東西,代碼錯誤與Uncaught SyntaxError:失蹤)在參數列表後,但括號看起來很好給我 – TMB87
可能額外parens其他地方呢? – ehacinom
這將是明顯的答案,但我真的不知道在哪裏 – TMB87