首先:创建一个数据表模板
CREATE TABLE IF NOT EXISTS ${this.tableName} (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
content TEXT NOT NULL,
date_added INTEGER NOT NULL
)
得到一个字段如下的表
接下来调用上传数据库数据的api
1.定义数据字段接口
因为insert方法中没有代码提升容易出错,所以我们选择定义一个接口并在insert方法中用as强制确定类型,这样就有代码提示了
interface NoteItem {
id: number | null // 新增时设置 id 为空值 null,用于自增 id
title: string
content: string
date_added: number
}
2获取操作数据库的对象
const store = await this.getStoreInstance()
3调用insert上传数据
const id = await store.insert(this.tableName, {
id: null, // 新增时设置 id 为空值 null,用于自增 id
title: '关键的问题',
content: '333',
date_added: Date.now()
} as NoteItem)
但是这样会报一个错误:
这个错误信息表明在你的代码中存在类型不匹配的问题。具体来说,它指出你试图将一个类型为
NoteItem 的参数赋值给了一个类型为 ValuesBucket 的参数,但是这两种类型不兼容。
这是内置的ValuesBucket类型:
那如何又想有代码提示又解决这个错误呢,我的方案是:
使用 interface NoteItem extends ValuesBucket 将 NoteItem 接口扩展为 ValuesBucket 接口,这样 NoteItem 就拥有了 ValuesBucket 的所有属性。然后,你在 NoteItem 中添加了自己的属性 id、title、content 和 date_added,这样就创建了一个包含了所有属性的新接口 NoteItem。
代码如下:
interface NoteItem extends ValuesBucket {
id: number | null // 新增时设置 id 为空值 null,用于自增 id
title: string
content: string
date_added: number
}