LeanCloud数据的查询,修改和删除

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

   

猜你喜欢

转载自2806814127.iteye.com/blog/2329594
今日推荐