编辑代码

//https://developer.mozilla.org/zh-CN/docs/Web/API/IndexedDB_API/Using_IndexedDB#%E5%9F%BA%E6%9C%AC%E6%A8%A1%E5%BC%8F
//一个event 只有一种属性 upgrade或者其他,type 表示event当前进行的状态
//必须更换事件
function fnInitializationIndexedDB(event, strDBStoreName,requestResultDB) {
    let objDBStore = requestResultDB.createObjectStore(strDBStoreName, { keyPath: "Spare1" });

    objDBStore.createIndex("Name_English", "Name_English", { unique: true });
    objDBStore.createIndex("Name_Chinese", "Name_Chinese", { unique: false });
    //objDBStore.createIndex("Spare1", "Spare1", { unique: false });
    objDBStore.createIndex("Address", "Address", { unique: false });
    objDBStore.createIndex("Name_Firt_Pinyin_Shorten", "Name_Firt_Pinyin_Shorten", { unique: false });

    objDBStore.transaction.oncomplete = (event) => {
        fnWriteData(event,strDBStoreName)
    }
}

function fnWriteData(event,strDBStoreName)
{
    let objDBCompanyDetails= {
                'Name_English': window.objGlobalParam.objAryCompanyDetails.ValueText,
                "Name_Chinese":window.objGlobalParam.objAryCompanyDetails.TradingAs,
                //"RateCode":"Suzhou Inovance Technology Rate",
                "Spare1":window.objGlobalParam.objAryCompanyDetails.Spare1,
                "Address": window.objGlobalParam.objAryCompanyDetails.Address,
                "Name_Firt_Pinyin_Shorten": prompt('请输入公司中文拼音首字母\n'+window.objGlobalParam.objAryCompanyDetails.TradingAs,'例如:szhcjsyxgs'),
                "CompanyId":window.objGlobalParam.objAryCompanyDetails.ValueTextId,
    }
    let dbWrite = event.target.result;
    dbWrite.transaction([strDBStoreName], "readwrite").objectStore(strDBStoreName).add(objDBCompanyDetails).onsuccess=(event)=>{
        alert('onsuccess');
    }
    console.log('store successful');
}

function fnGetData(event,strDBStoreName,objDBCompanyDetails)
{
    let dbWrite = event.target.result;
    dbWrite.transaction([strDBStoreName], "readwrite").objectStore(strDBStoreName).get(prompt('请输入中文首字母',"例如:szhcjsyxgshwsyb")).onsuccess=(event)=>{
        alert('onsuccess\n');
        console.log(event);
        console.log('${request.result}');
        console.log("${request.result.Name_English}");
        console.log('${request.result.Name_English}');

        /*var prefixRange= IDBKeyRange.bound('汇川','\uFFFF汇川\uFFFF');
        var index = db.result.transaction(['Company'],'readonly').objectStore('Company').index('Name_Chinese').openCursor(prefixRange) 
        var index = db.result.transaction(['Company'],'readonly').objectStore('Company').index('Name_Chinese').openCursor(prefixRange).onsuccess=(e)=>{
    const cursor = e.target.result;
    if(cursor){
        console.log("found",cursor.value);
        cursor.continue();
    }
}
        */
    }
    console.log('get successful');
}




/*
Name: fnProcessDataToIndexedDB
Function: Save Information To IndexedDB
Param: objParam.bIfWrite
        objParam.bIfRead
{
        "ValueText": "Suzhou Inovance Technology Co., Ltd. (Ascott-Suzhou-5912)",
        "ValueTextId": 228645,
        "Address": "NO.16,Youxiang Road,Yuexi Street Suzhou",
        "BillingNote": "",
        "Notes": "",
        "CreditHold": false,
        "Primary": false,
        "Spare1": "C2022-02125912",
        "TradingAs": "苏州汇川技术有限公司",
        "BookSrc": "",
        "BookSrcId": 0,
        "ResType": "",
        "ResTypeId": 0,
        "HideRateFromCorrespondence": false,
        "Spare2": "",
        "Spare3": "",
        "Spare4": "",
        "Spare5": "",
        "BranchType": ""
    }
Return: 

future: 
 */

function fnProcessDataToIndexedDB(strDBStoreName, objParam) {
    let strDBName = 'SSBS_RMS_DB';
    let STORE_NAME = strDBStoreName;
    let DB_VERSION = 1; // 每次结构变更递增版本

    let requestDB = window.indexedDB.open(strDBName, DB_VERSION);

    


    requestDB.onerror = (event) => {
        console.error("为什么不允许我的 web 应用使用 IndexedDB!");
        requestDB = null;
    };
    requestDB.onsuccess= (event)=>{
        if(objParam.bIfWrite)
        {
            alert('onsuccess');
            fnWriteData(event,strDBStoreName);
        }
        else if(objParam.bIfRead)
        {
            fnGetData(event,strDBStoreName);
        }
    }
    /*    request.onsuccess = (event) => {
            db = event.target.result;
            db.onerror = (event) => {
                // 针对此数据库请求的所有错误的通用错误处理器!
                console.error(`数据库错误:${event.target.errorCode}`);
                db, requestDB = null;
            };
        }; */
    requestDB.onupgradeneeded = (event) => {

        if (requestDB.result.objectStoreNames.length == 0 || !requestDB.result.objectStoreNames.contains(strStoreName)) {
            alert('onupgradeneeded');
            fnInitializationIndexedDB(event,strDBStoreName,requestDB.result);
        }

        /*let db = event.target.result;
        let customerData = [
            { ssn: "444-44-4444", name: "Bill", age: 35, email: "bill@company.com" },
            { ssn: "555-55-5555", name: "Donna", age: 32, email: "donna@home.org" },
        ];
        // 创建一个对象存储来存储我们客户的相关信息,我们将“ssn”作为键路径
        // 因为 ssn 可以保证是不重复的——或至少在启动项目的会议上我们是这样被告知的。
        let objectStore = db.createObjectStore("customers", { keyPath: "ssn" });

        // 创建一个索引以通过姓名来搜索客户。名字可能会重复,所以我们不能使用 unique 索引。
        objectStore.createIndex("name", "name", { unique: false });

        // 使用邮箱建立索引,我们想确保客户的邮箱不会重复,所以我们使用 unique 索引。
        objectStore.createIndex("email", "email", { unique: true });

        // 使用事务的 oncomplete 事件确保在插入数据前对象存储已经创建完毕。
        objectStore.transaction.oncomplete = (event) => {
            // 将数据保存到新创建的对象存储中。
            let customerObjectStore = db
                .transaction("customers", "readwrite")
                .objectStore("customers");
            customerData.forEach((customer) => {
                customerObjectStore.add(customer);
            });
        }; */
    };

   /* request1.result.transaction('company', 'readonly');
    temp1.objectStore('customers').get('444-44-4444');
    temp1.onsuccess = (event) => {
        console.log(`SSN 444-44-4444 对应的名字是 ${event.target.result.name}`);
    }; */
    /*const dbRequest = indexedDB.open(DB_NAME, DB_VERSION);

    
    dbRequest.onupgradeneeded = (event) => {
        const db = event.target.result;

        if (!db.objectStoreNames.contains(STORE_NAME)) {
            // 创建对象仓库
            const store = db.createObjectStore(STORE_NAME, {
                keyPath: 'userId',
                autoIncrement: false
            });

            // 创建复合索引
            store.createIndex('age_gender', ['age', 'gender'], { unique: false });
            // 唯一约束索引
            store.createIndex('email', 'email', { unique: true });
        }

        // 版本2新增登录时间索引
        if (event.oldVersion < 2) {
            const store = event.target.transaction.objectStore(STORE_NAME);
            store.createIndex('lastLogin', 'loginTimestamp', { unique: false });
        }
    };

    dbRequest.onsuccess = (event) => {
        const db = event.target.result;
        db.onversionchange = () => db.close(); // 安全关闭监听
    }; */


    /*let objParam = {
                "strName": "fnCallbackGetInhouseReservationList", 
                    "objValue": 0
            }
        window.postMessage(objParam); */
}
//# sourceURL=my-script.js