//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