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 } )); };