我有一个离子/ angularjs应用程序,我正在尝试获取SQLite的最后一个插入ID,但无论我尝试什么方式,我尝试访问promise中的变量作为undefined返回。 / p>
我的承诺是;
$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 [i]))只返回insertId。我已经尝试添加.value.InsertId和.InsertId,但无论出于何种原因,我似乎无法让InsertId重新使用它
修改:我已将代码更新为以下内容,但看起来没问题,但是我收到了错误消息: 参数列表
之后的Uncaught SyntaxError:missing)$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++;
}
}
答案 0 :(得分:1)
除了.then之外,你不能将console.log()作为Promise的返回内容。据我了解您的代码,这可能有用,或类似的东西:
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++;
}