【发布时间】:2021-01-19 08:28:03
【问题描述】:
首先,docs 中的“真实类”示例无法编译:
export class Contact implements IContact {
id: number;
first: string;
last: string;
emails: IEmailAddress[];
phones: IPhoneNumber[];
constructor(first: string, last: string, id?:number) {
this.first = first;
this.last = last;
if (id) this.id = id;
}
编译器抱怨没有在构造函数中设置 id。保留设置 ID undefined/id? 的选项。
但是对于未定义的 id,Table.put()/add() 会抛出错误:Unhandled Rejection (DataError): Data provided to an operation does not meet requirements.
我的示例代码:
export class DBProgram {
id?: number
name: string
description: string
constructor(name: string, description: string, id?:number) {
this.name = name
this.description = description
// if(id) this.id = id
}
save() {
return idb.transaction('rw', idb.dbPrograms, async () => {
// delete this.id
this.id = await idb.dbPrograms.add(this);
});
}
}
export class Idb extends Dexie {
dbPrograms: Table<DBProgram, number>
constructor () {
super("Idb")
this.version(1).stores({
dbPrograms: '++id, name, description, commands',
})
this.dbPrograms = this.table('dbPrograms')
this.dbPrograms.mapToClass(DBProgram)
}
}
export const idb = new Idb()
当我取消注释 delete this.id 时,它会运行并存储具有自动 ID 的对象。但似乎 Dexie 不会处理undefined id。
对此有任何提示吗?
不幸的是,它在代码和框中工作:https://codesandbox.io/s/determined-lake-ntbzv?fontsize=14&hidenavigation=1&theme=dark
与codesandbox 相比,我不知道我的源代码中还有什么问题。可能是版本问题?不过 Dexie 版本是一样的。
【问题讨论】:
标签: typescript dexie