添加主键作为参数时 Dexiedb Put 方法不起作用
Dexiedb Put method not working when adding primary key as argument
我正在为我的 angular 项目使用 dexiedb。我有一个带有评论 table 的数据库。我想将用户输入添加到数据库中,我正在使用 table.put(item, [key])。我只想在第一行添加,所以主键 = 0,这就是我指定键的原因。但它不起作用。
下面是我的代码片段。将主键作为参数时出现错误。
无法在 'IDBObjectStore' 上执行 'put':提供了 o... 内联键和键参数。",
@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 的第一行,因为主键已经存在
您的主键(++id)是inbound,这意味着您只能在对象本身内指定键,不需要使用可选的键参数。如果使用可选的键参数,API 将失败,除非主键是出站的。这个 API 反映了原始 IndexedDB 的 IDBObjectStore.put() 方法,它对入站键的作用相同。
改为使用:
this.contactDB.table('comments').put({...comment, id: 0})
我正在为我的 angular 项目使用 dexiedb。我有一个带有评论 table 的数据库。我想将用户输入添加到数据库中,我正在使用 table.put(item, [key])。我只想在第一行添加,所以主键 = 0,这就是我指定键的原因。但它不起作用。
下面是我的代码片段。将主键作为参数时出现错误。
无法在 'IDBObjectStore' 上执行 'put':提供了 o... 内联键和键参数。",
@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 的第一行,因为主键已经存在
您的主键(++id)是inbound,这意味着您只能在对象本身内指定键,不需要使用可选的键参数。如果使用可选的键参数,API 将失败,除非主键是出站的。这个 API 反映了原始 IndexedDB 的 IDBObjectStore.put() 方法,它对入站键的作用相同。
改为使用:
this.contactDB.table('comments').put({...comment, id: 0})