2017-11-03 8 views
0

나는 내 색인화 된 데이터베이스에 항목을 추가하는 기능이있다 : 이제 문서에 따라Dexie.dataError는() .add하기 위해 키를 전달할 때

const dbParams = { 
    // Update this when changing the db schema 
    dbVersion: 1, 
    // Database, object store names 
    databaseName: "CropViewConfigData", 
    datesConfigStoreName: "datesConfig" 
}; 

// Create db instance 
const db = new dexie(dbParams.databaseName); 

// Define db schema 
db.version(dbParams.dbVersion).stores({ 
    // First param is primaryKey followed by indexes 
    [dbParams.datesConfigStoreName]: ",name, *fields" 
}); 

// Open the database 
db.open().catch(function(e) { 
    console.error("Failed opening indexedDb"); 
}); 

// Store a new configuration into the database 
export async function storeDateConfig(name, fields) { 
    // Throw error if name is not defined 
    if (!name || name === "") { 
    throw new nameException("Config name is not valid"); 
    } 
    // Throw error if no fields 
    if (!fields || fields.length < 0) { 
    throw new fieldsException("Fields data is not valid"); 
    } 
    // Throw error if name already exists 
    const savedConfig = await db.datesConfig.get(name); 
    if (savedConfig) { 
    throw new nameException("Name already exists"); 
    } 
    // Add data to db 
    await db.datesConfig.add({ fields: fields }, [name]); 
} 

, ",name, *fields"는 기본 키가 어느 인바운드는 것을 의미한다 자동 증가, '필드'에는 키 배열 (*)이 포함됩니다.

.add 함수에 키를 전달할 수 있어야합니까?

message:"Failed to execute 'add' on 'IDBObjectStore': The object store uses in-line keys and the key parameter was provided." name:"DataError"

내가 잘못 뭐하는 거지 :

하지만이 오류는 무엇입니까?

답변

0

스키마가 생성 된 데이터베이스와 동기화되어 있는지 확인하십시오. 스키마가 인바운드 키를 사용하고 스키마를 변경 한 후에 코드를 변경 한 것일 수 있습니까? 수행하면 어떻게됩니까

Dexie.delete(dbParams.databaseName).then(() => { 
... your code 
})