当添加主键作为参数时,Dexiedb Put方法不起作用

时间:2019-07-18 05:19:21

标签: dexie

我在我的角度项目中使用了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转到第一行

1 个答案:

答案 0 :(得分:0)

您的主键(++ id)是inbound,这意味着您只能在对象本身内指定键,而无需使用可选的key参数。如果使用可选的key参数,则API将会失败,除非主键已出站。该API反映了原始IndexedDB的IDBObjectStore.put()方法,该方法对入站键也起作用。

相反,使用:

this.contactDB.table('comments').put({...comment, id: 0})