Fiori2.0学习笔记-OData的应用

对OData进行筛选和过滤操作
是model库下的FilterOperator节点进行操作

    sap.ui.model.FilterOperator.BT   FilterOperator between.

      new sap.ui.model.Filter("name", sap.ui.model.FilterOperator.BT, "A","G"); // 比如这个,先起一个名字,引入方法,指定区间
            sap.ui.model.FilterOperator.Contains  FilterOperator contains
            new sap.ui.model.Filter("name", sap.ui.model.FilterOperator.Contains, "Paz");

            sap.ui.model.FilterOperator.EndsWith  FilterOperator ends with
            sap.ui.model.FilterOperator.EQ   FilterOperator equals
            sap.ui.model.FilterOperator.GE  FilterOperator greater or equals
            sap.ui.model.FilterOperator.GT  FilterOperator greater than
            sap.ui.model.FilterOperator.LE   FilterOperator less or equals
            sap.ui.model.FilterOperator.LT  FilterOperator less than
            sap.ui.model.FilterOperator.NE  FilterOperator not equals

            sap.ui.model.FilterOperator.StartsWith  FilterOperator starts with
                    new sap.ui.model.Filter("name", sap.ui.model.FilterOperator.StartsWith, "M");

这里我们引用官方提供学习的ODataModel,但是笔者运行后发现已经被弃用了…坑爹玩应…
官方具体解释在这里

Synchronous XMLHttpRequest outside of workers is in the process of being removed from the web platform as it has detrimental effects to the end user’s experience. (This is a long process that takes many years.) Developers must not pass false for the async argument when current global object is a Window object. User agents are strongly encouraged to warn about such usage in developer tools and may experiment with throwing an InvalidAccessError exception when it occurs.

你可以想象运行成功后,这里会有几条label数据就可以了…

    var odataModel = new sap.ui.model.odata.v2.ODataModel('/DemoService/V2/(S(xogxg1ckcor00ikzn42t0sbk))/OData/OData.svc/', false);

            this.getView().setModel(odataModel);

然后我们一次查看增删改查这几个方法

read方法
我们查找Suppliers节点的所有数据

    odataModel.read("/Suppliers", {
                urlParameters: '&$format=json',
                success: function(oData) {
                    console.log(oData);
                },
                error: function(oData) {

                }
            });

同时我们也可以增添一些筛选条件

    var aFilter = []; 
    //2 filters,因为加了两条筛选条件,所以我们定义一个数组
    aFilter.push(new sap.ui.model.Filter("ID", sap.ui.model.FilterOperator.EQ, "1"));
    //注意这里用到了push方法push到aFilter
    aFilter.push(new sap.ui.model.Filter("Name", sap.ui.model.FilterOperator.EQ, "Tokyo Traders"));
    odataModel.read("/Suppliers", {
    urlParameters: '&$format=json',
    filters: aFilter,
    success: function(oData) {
        console.log(oData);
                },
    error: function(oData) {

                }
            });

create方法

            var oNewSupplier = {
                     "ID": 1113,
                     "Name": "测试",
                      "Address": {
                          "Street": "sonhualu",
                          "City": "wuhan",
                          "State": "CH",
                          "ZipCode": "150000",
                          "Country": "中国"
                      }
                    };

            var oCreateModel = new sap.ui.model.odata.v2.ODataModel('/DemoService/V2/(S(tigt4zfne0egj3u25bhqq32a))/OData/OData.svc/', true);
              oCreateModel.setUseBatch(false);
              //这里要把setUseBatch禁掉,因为我们有很多默认的setUseBatch请求我们不需要,禁掉就可以
              oCreateModel.setHeaders({
                         "Content-type":"application/json"
                    });

              oCreateModel.create("/Suppliers", oNewSupplier, {
              //创建一个节点,然后把我们的数据模型放在这里
                  success: function(oData){
                    alert('create success');
                  },
                  error: function(){

                  }
              }); 

updata方法

        var oModifiyData = {
                    "Name": "测试",
                     "Address": {
                         "Street": "sonhualu",
                         "City": "wuhan",
                         "State": "CH",
                         "ZipCode": "150000",
                         "Country": "中国"
                     }
                    };
            var oUpdateModel = new sap.ui.model.odata.v2.ODataModel('/DemoService/V2/(S(tigt4zfne0egj3u25bhqq32a))/OData/OData.svc/', true);

            oUpdateModel.setHeaders({
                         "If-Match":"*"
                    });
            oUpdateModel.update("/Suppliers(1)", oModifiyData, {
                success: function(oData, oResponse){
                    alert('update success');
                },
                error: function(oError){

                }
            });

删除操作

    var oDeleteModel = new sap.ui.model.odata.v2.ODataModel('/DemoService/V2/(S(tigt4zfne0egj3u25bhqq32a))/OData/OData.svc/');

            oDeleteModel.setHeaders({
                         "If-Match":"*"
                    });
            oDeleteModel.remove("/Suppliers(1)", {
                success: function(oData, oResponse){
                    alert('delete success');
                },
                error: function(oError){

                }
            });

我们对gateway的操作经常会遇见一个csrf token的验证
如果报一个token未验证的BUG的时候你就可以用一下代码

        var oReadTokenModel = new sap.ui.model.odata.v2.ODataModel('/DemoService/V2/(S(tigt4zfne0egj3u25bhqq32a))/OData/OData.svc/');
        //实例化这么一个Model
            oReadTokenModel.setHeaders({
                    "X-CSRF-TOKEN": "Fetch"
                    //当前我们需要get到这个token
                    });

                 oReadTokenModel.refreshSecurityToken(function(data, response) {
                 //然后我们就通过refreshSecurityToken就能读到token的一个详细信息
                     alert(response.headers['x-csrf-token']);
                 }, function(data) {}, true);

                 oReadTokenModel.read("?$format=json", {
                     'success': function(data, response) {

                     },
                     'error': function(data, response) {

                     }
                 });
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值