我有一个角度应用程序,我试图插入到一个索引数据库。问题是数据库没有被创建。
下面是代码中的一节,我在其中插入了一个数据库条目。
createImageFromBlob(ficname:any , image: Blob) {
let reader = new FileReader();
reader.addEventListener("load", (evt) => {
let res = evt.target.result;
// Store Data URL in localStorage
try {
if (typeof res === "string") {
localStorage.setItem(ficname, res);
this.dixieDbService.addNewImage(ficname, res).then(r => console.log("inserted: "));
}
}
catch (e) {
console.log("Storage failed: " + e);
}
}, false);
if (image) {
reader.readAsDataURL(image);
}
}
下面是bd.ts
import Table = Dexie.Table;
import Dexie from "dexie";
export interface ImageList {
id?: number;
imgName: string;
imgDataUrlValue: string|ArrayBuffer;
}
export class AppDB extends Dexie {
imageList!: Table<ImageList, number>;
constructor() {
super('ngdexieliveQuery');
this.version(3).stores({
imageList: '++id'
});
// this.on('populate', () => this.populate());
}
}
export const db = new AppDB();
以下是服务类别:
import {Injectable} from "@angular/core";
import {liveQuery} from "dexie";
import {db, ImageList} from "../dixie/db";
@Injectable()
export class DixieIndexedDbService {
imageList$ = liveQuery(() => db.imageList.toArray());
listName = 'My local image list';
async addNewImage(imgName:string, imgDataVal:any) {
await db.imageList.add({
imgName: imgName,
imgDataUrlValue:imgDataVal
});
}
async getImgDataValue(imgName:string) {
return db.imageList.get({imgName: imgName});
}
}
我有stackblitz上的示例工作代码:
发布于 2022-01-23 06:06:07
在调用Dexie
的构造函数时没有提供任何选项,以便创建数据库.
open
createImageFromBlob
中调用load
事件处理程序,应该调用DexieService
方法,该方法应该作为指定实现的一部分在数据库上发出查询。发布这篇文章,我们应该有一个数据库。AppDB
类调用open
..。
import Table = Dexie.Table;
import Dexie from "dexie";
export interface ImageList {
id?: number;
imgName: string;
imgDataUrlValue: string|ArrayBuffer;
}
export class AppDB extends Dexie {
imageList!: Table<ImageList, number>;
constructor() {
super('ngdexieliveQuery');
this.version(3).stores({
imageList: '++id'
});
this.open(); // <---- Missing in OP
// this.on('populate', () => this.populate());
}
}
export const db = new AppDB();
https://stackoverflow.com/questions/70818486
复制相似问题