我在我的角度项目中使用了dexiedb。我有一个带有注释表的数据库。我想将用户输入添加到数据库,并且我正在使用table.put(item,[key])。我只想在第一行中添加,所以主键= 0,这就是为什么我指定键。但这不起作用。
下面是我的代码段。将主键用作参数时出现错误。
无法在'IDBObjectStore'上执行'put':提供了o…内联键和key参数。”,
@Injectable()
export class DexieService{
onNewComment = new EventEmitter<Comments>();
contactDB: Dexie;
constructor(){
this.contactDB = new Dexie('contact');
this.contactDB.version(1).stores({
comments:'++id,comment'
})
}
addComment(comment: Comments): Promise<any>{
return(
this.contactDB.table('comments').put(comment,0)
.then((result) =>{
this.onNewComment.next(comment);
return (result);
})
)
}
预期结果应该是,当添加任何新注释时,由于主键已经存在,它将始终以主键= 0转到第一行
答案 0 :(得分:0)
您的主键(++ id)是inbound,这意味着您只能在对象本身内指定键,而无需使用可选的key参数。如果使用可选的key参数,则API将会失败,除非主键已出站。该API反映了原始IndexedDB的IDBObjectStore.put()方法,该方法对入站键也起作用。
相反,使用:
this.contactDB.table('comments').put({...comment, id: 0})