天天看點

salesforce notes

Salesforce notes

  1. Json字元串中帶有自對象資訊,不能直接轉成Sobject
{
	"sobjectfield":"value",
    "Children__r": [{
        "SomeField": "some value"
  	}, {
        "SomeField": "some value"
  	}]
}
           

需要将子對象做一下轉化:

{
	"sobjectfield":"value",
    "Children__r": {
    	"totalSize": 123,
        "done": true,
        "records":[{
    		"SomeField": "some value"
      	}, {
    		"SomeField": "some value"
      	}]
    }
}
           

前端解決方案:

function rewriteSubquery(array) {
   if (array && !array.hasOwnProperty('records')) {
   var tempArray = array;
   array = {
       totalSize: tempArray.length,
       done: true,
       records: tempArray
   	}
    }
   return array;
};
           

遞歸解決複雜的對象:

let rewriteSubquery = (jsonObj) => {

    let jsTypes = ['Array', 'Object'];

    if (objType(jsonObj) == jsTypes[0]) {
        jsonObj.map((x, i) => (rewriteSubquery(x)));

        // for (let i = 0; i < jsonObj.length; i++) {

        //     rewriteSubquery(jsonObj[i]);

        // }
    } else {

        for (key in jsonObj) {

            console.log('-->', key);
            //key:屬性名
            //attr[key]:屬性值    
            let value = jsonObj[key];
            console.log('22-->', objType(value));
            //判斷是不是__r
            if (key.endsWith('__r')) {
                //判斷是不是數組
                if (objType(value) == jsTypes[0]) {
                    //是數組則格式化為背景可以處理的類型
                    jsonObj[key] = addAttrs(value);
                    // rewriteSubquery(jsonObj[key]);
                    //return jsonObj[key];
                }
            }
            console.log('33-->', objType(value));
            //判斷是不是object
            if (objType(value) == jsTypes[1] || objType(value) == jsTypes[0]) {

                console.log('44-->', objType(value));
                rewriteSubquery(value);
            }

        }
    }

};

let addAttrs = (array) => {
    if (array && !array.hasOwnProperty('records')) {
        var tempArray = array;
        array = {
            totalSize: tempArray.length,
            done: true,
            records: tempArray
        }
    }
    return array;
};



let objType = (obj) => {
    let jsTypes = ['String', 'Number', 'Boolean', 'Array', 'Null', 'Undefined', 'Object', 'Function', 'Date', 'RegExp', 'Symbol'];
    let theType;
    jsTypes.map(x => {
        if (Object.prototype.toString.call(obj) == '[object ' + x + ']') {
            theType = x;
        }
    })
    return theType;
}
e.g.:
let jsonObj = {
    "key1": { 'a': 'b' },
    "key2__r": { 'a2': 'b2' },
    "key3__r": [{ 'a3': 'b3' }],
    "key4": [
        {
            "key2__r": { 'a2': 'b2' },
        }, {
            "key3__r": [
                { 'a3': 'b3' }, 
                { 'a3': 'b3' },
                { 'key5__r': [{'b5':'a5'}] },
            ],
        }
    ]
};
//調用
rewriteSubquery(jsonObj);
//輸出:
{
	"key1": {"a": "b"},
	"key2__r": {"a2": "b2"},
	"key3__r": {
		"totalSize": 1,
		"done": true,
		"records": [{
			"a3": "b3"
		}]
	},
	"key4": [{"key2__r": {"a2": "b2"}}, {
		"key3__r": {
			"totalSize": 3,
			"done": true,
			"records": [{"a3": "b3"}, 
                           {"a3": "b3"}, {
				"key5__r": {
					"totalSize": 1,
					"done": true,
					"records": [{
						"b5": "a5"
					}]
				}
			}]
		}
	}]
}
           
  1. 前端導出Excel簡版
var data = [
[表頭1, 表頭2],
[值1, 值2]
]
var filename = fileName + ".xlsx";
var ws_name = sheetName; //Excel第一個sheet的名稱
var wb = XLSX.utils.book_new(), ws = XLSX.utils.aoa_to_sheet(data);
XLSX.utils.book_append_sheet(wb, ws, ws_name);  //将資料添加到工作薄
XLSX.writeFile(wb, filename); //導出Excel

           

繼續閱讀