LeanCloud数据的查询,修改和删除
1.对存储在LeanCloud中的数据进行查询,修改
(1)首先创建查询实例
var query = new AV.Query('Todo');
(2)获取对象并进行修改
每个被成功保存在云端的对象会有一个唯一的 Id 标识 ,因此获取对象的最基本的方法就是根据 id来查询.
$scope.addButtonEvent = function(product,num){
var userId=$scope.getUserId();//每次认证登陆云端会返回给本地一个id并从本地获取的id
var user=AV.Object.createWithoutData('User', userId);
var relation=user.relation('productInfo'); //'productInfo'关联数据的名字
var query = relation.query(); //创建的查询实例
query.find().then(function(results){ //results为云端返回某id用户的数据,该数据是对象的数组
var itemName = [];
for (var i = 0; i < results.length; i++) {
itemName.push(results[i].get('itemName'))
}
var index=itemName.indexOf(product.itemName);
if(index==-1){
ShoppingCart.addProduct(product, user);
}else{
var goodsInfo=AV.Object.createWithoutData('GoodsInfo',results[index].id);
var itemInfo=Item.computeItemCount(results[index],num);
var itemInfo=Item.computeCostPrice(itemInfo);
var promotion=new Promotion();
var itemInfo=promotion.computePromotionCount(itemInfo);
var itemInfo=promotion.computeSavePrice(itemInfo);
var itemInfo=ShoppingCart.computeActuallyPaid(itemInfo);
goodsInfo.set('count',itemInfo.attributes.count);
goodsInfo.set('costPrice',JSON.stringify(itemInfo.attributes.costPrice));
goodsInfo.set('promotionCount',itemInfo.attributes.promotionCount);
goodsInfo.set('savePrice',itemInfo.attributes.savePrice);
goodsInfo.set('actuallyPaid',JSON.stringify(itemInfo.attributes.actuallyPaid));
goodsInfo.save(); //以上调用set方法是对数据的修改
$scope.showCartCount()
}
}, function (error) {
//异常处理
});
}
3.对数据进行删除
$scope.addButtonEvent=function(){
var userId = $scope.getUserId();
var user = AV.Object.createWithoutData('User', userId);
var relation = user.relation('productInfo');
var query = relation.query();
query.find().then(function(results){
for(var i=0;i<results.length;i++){
results[i].destroy();//使用destroy方法对返回来的数据进行删除
}
});
};
4.使用$q处理异步问题
q服务是AngularJS中自己封装实现的一种Promise实现.通过$q服务得到一个deferred实例,通过deferred实例的promise属性得到一个Promise对象,promise对象负责定义回调函数,deferred实例负责触发回调.
$scope.showShoppingList=function(){
var defer = $q.defer();
var promise = defer.promise; //defer为延时
var userId = $scope.getUserId();
var user = AV.Object.createWithoutData('User', userId);
var relation = user.relation('productInfo');
var query = relation.query();
promise.then(function(data){ //该函数是让请求到的数据做什么
$scope.cartList=data ;
$scope.showSumSavePrice(data)
$scope.showActuallyPaid(data);
});
defer.resolve( query.find().then(function(results){ //该方法是从云端获取数据
var data=[];
for(var i=0;i<results.length;i++){
data.push(results[i].attributes)
}
return data
}
));
};
3386

被折叠的 条评论
为什么被折叠?



