Skip to content

Commit 8daf16c

Browse files
committed
add indexDb and Nedb Demo
1 parent a5a29a6 commit 8daf16c

File tree

7 files changed

+246
-25
lines changed

7 files changed

+246
-25
lines changed

.env.serve-prod

Lines changed: 0 additions & 4 deletions
This file was deleted.

electron-main.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ const createWindow = () => {
1818
// detail to using look https://github.com/jeffbski/wait-on
1919
let opts = {
2020
resources: ['http://localhost:5006/index.html'],
21-
delay: 1000, // initial delay in ms, default 0
21+
delay: 0, // initial delay in ms, default 0
2222
timeout: 6000 // timeout in ms, default Infinity
2323
}
2424
waitOn(opts, (err) => {
@@ -38,7 +38,7 @@ const createWindow = () => {
3838
//引入相应的主线程
3939
require('./electron/main/MainRendererComm')
4040
//import menu
41-
require('./electron/main/menu')
41+
//require('./electron/main/menu')
4242
//import tray
4343
require('./electron/main/tray')
4444
//import tray

nedbStore.db

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{"name":"","age":"","_id":"2a9H6ypIAD6ZVDia"}
2+
{"name":"","age":"","_id":"CdQJoiYSP7gWobjQ"}
3+
{"name":"","age":"","_id":"PpvyYzNUwXdnX3MB"}
4+
{"name":"","age":"","_id":"ciMTWeWe1pQIZGMr"}
5+
{"name":"","age":"","_id":"h2IbNY5Yv65JPZaf"}
6+
{"name":"","age":"","_id":"yYymdGWiUIJziEns"}

package.json

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,13 @@
7373
}
7474
},
7575
"dependencies": {
76+
"@electron/remote": "2.0.1",
7677
"@element-plus/icons-vue": "0.2.4",
7778
"axios": "0.21.3",
7879
"echarts": "4.2.1",
80+
"electron-is-dev": "2.0.0",
7981
"element-plus": "1.2.0-beta.6",
82+
"fs-extra": "10.0.0",
8083
"mitt": "3.0.0",
8184
"moment-mini": "^2.22.1",
8285
"nprogress": "0.2.0",
@@ -86,33 +89,31 @@
8689
"vue": "3.2.26",
8790
"vue-router": "4.0.12",
8891
"vuex": "4.0.2",
89-
90-
91-
"@electron/remote": "2.0.1",
92-
"electron-is-dev": "2.0.0",
93-
"fs-extra": "10.0.0",
92+
"nedb": "1.8.0",
9493
"wait-on": "6.0.0"
9594
},
9695
"devDependencies": {
9796
"@babel/eslint-parser": "7.16.3",
9897
"@types/echarts": "4.9.7",
9998
"@types/mockjs": "1.0.3",
10099
"@types/node": "15.0.1",
100+
"@typescript-eslint/eslint-plugin": "5.5.0",
101+
"@typescript-eslint/parser": "5.5.0",
101102
"@vitejs/plugin-legacy": "1.6.4",
102103
"@vitejs/plugin-vue": "1.10.2",
103104
"@vitejs/plugin-vue-jsx": "1.3.1",
104105
"@vue/compiler-sfc": "3.2.26",
105-
"@typescript-eslint/eslint-plugin": "5.5.0",
106-
"@typescript-eslint/parser": "5.5.0",
106+
"electron": "16.0.5",
107+
"electron-builder": "22.14.5",
107108
"eslint": "7.32.0",
108109
"eslint-config-prettier": "8.3.0",
109110
"eslint-define-config": "1.2.0",
110111
"eslint-plugin-import": "2.25.3",
111112
"eslint-plugin-prettier": "4.0.0",
112113
"eslint-plugin-vue": "8.1.1",
113-
114114
"husky": "7.0.2",
115115
"mockjs": "1.1.0",
116+
"nodemon": "1.19.1",
116117
"prettier": "2.2.1",
117118
"sass": "1.32.12",
118119
"scss": "0.2.4",
@@ -122,12 +123,7 @@
122123
"vite-plugin-mock": "^2.9.6",
123124
"vite-plugin-style-import": "1.2.1",
124125
"vite-plugin-svg-icons": "1.0.5",
125-
"vue-tsc": "0.28.1",
126-
127-
128-
"electron": "16.0.5",
129-
"electron-builder": "22.14.5",
130-
"nodemon": "1.19.1"
126+
"vue-tsc": "0.28.1"
131127
},
132128
"engines": {
133129
"node": ">=14"

src/router/index.js

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,25 +52,37 @@ export const constantRoutes = [
5252
path: 'main-renderer-comm',
5353
component: () => import('@/views/electron/MainRendererComm.vue'),
5454
name: 'MainRenderer',
55-
meta: { title: 'Main Renderer', icon: 'table' }
55+
meta: { title: 'Main Renderer' }
5656
},
5757
{
5858
path: 'electron-demo',
5959
component: () => import('@/views/electron/ElectronDemo.vue'),
6060
name: 'ElectronDemo',
61-
meta: { title: 'Electron Demo', icon: 'table' }
61+
meta: { title: 'Electron Demo' }
6262
},
6363
{
6464
path: 'fs-extra',
6565
component: () => import('@/views/electron/FsExtra.vue'),
6666
name: 'FsExtra',
67-
meta: { title: 'fs-extra', icon: 'table' }
67+
meta: { title: 'fs-extra' }
6868
},
6969
{
7070
path: 'notify-netListen',
7171
component: () => import('@/views/electron/NotifyNetListen.vue'),
7272
name: 'NotifyNetListen',
73-
meta: { title: 'Notify Net', icon: 'table' }
73+
meta: { title: 'Notify Net' }
74+
},
75+
{
76+
path: 'nedb-demo',
77+
component: () => import('@/views/electron/NedbDemo.vue'),
78+
name: 'NedbDemo',
79+
meta: { title: 'NedbDemo' }
80+
},
81+
{
82+
path: 'indexDb-demo.vue',
83+
component: () => import('@/views/electron/IndexDbDemo.vue'),
84+
name: 'IndexDbDemo',
85+
meta: { title: 'IndexDbDemo' }
7486
}
7587
]
7688
},
@@ -270,7 +282,6 @@ export const constantRoutes = [
270282
}
271283
]
272284

273-
274285
/**
275286
* asyncRoutes
276287
* the routes that need to be dynamically loaded based on user roles

src/views/electron/IndexDbDemo.vue

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
<template>
2+
<div class="scroll-y">
3+
<div class="mb-2">IndexDbDemo.vue</div>
4+
<button @click="addData()">增加数据</button>
5+
6+
<br />
7+
8+
<br />
9+
<button @click="updateData()">编辑数据</button>
10+
11+
<br />
12+
13+
<br />
14+
<button @click="deleteData()">删除数据</button>
15+
16+
<br />
17+
<br />
18+
<br />
19+
<button @click="findData()">查找数据</button>
20+
21+
<div class="mt-2">显示的数据</div>
22+
<div>{{ personData }}</div>
23+
</div>
24+
</template>
25+
26+
<script setup>
27+
//参考文档:https://www.cnblogs.com/chenjun1/p/11644866.html
28+
29+
import { reactive, toRefs } from 'vue'
30+
// 创建数据库
31+
// 第一个参数为数据库名称,第二个数据库为版本号,返回一个IDBOpenDBRequest对象用于操作数据库。
32+
// 对于open()的第一个参数数据库名,open()会先去查找本地是否已有这个数据库,如果有则直接将这个数据库返回,如果没有,则先创建这个数据库,再返回。对于第二个参数版本号,则是一个可选参数,如果不传,默认为1,但是如果传入必须是一个整数
33+
const request = indexedDB.open('myDatabase', 1)
34+
let db
35+
request.onsuccess = function (event) {
36+
db = request.result
37+
console.log('数据库打开成功')
38+
}
39+
request.onerror = function (event) {
40+
console.log('数据库打开报错')
41+
}
42+
//数据库升级事件
43+
request.onupgradeneeded = function (event) {
44+
db = event.target.result
45+
let objectStore
46+
//新增一张叫做person的表格,主键是id,是否存在,如果不存在再新建
47+
if (!db.objectStoreNames.contains('person')) {
48+
objectStore = db.createObjectStore('person', { keyPath: 'id' })
49+
objectStore.createIndex('name', 'name', { unique: false })
50+
objectStore.createIndex('email', 'email', { unique: true })
51+
}
52+
}
53+
const addData = () => {
54+
let request = db
55+
.transaction(['person'], 'readwrite')
56+
.objectStore('person')
57+
.add({ id: 1, name: '张三', age: 24, email: '[email protected]' })
58+
59+
request.onsuccess = function (event) {
60+
console.log('数据写入成功')
61+
}
62+
63+
request.onerror = function (event) {
64+
console.log('数据写入失败')
65+
}
66+
}
67+
68+
let state = reactive({
69+
personData: {}
70+
})
71+
72+
const { personData } = toRefs(state)
73+
74+
const findData = () => {
75+
let transaction = db.transaction(['person'])
76+
let objectStore = transaction.objectStore('person')
77+
let request = objectStore.get(1)
78+
79+
request.onerror = function (event) {
80+
console.log('事务失败')
81+
}
82+
83+
request.onsuccess = function (event) {
84+
if (request.result) {
85+
state.personData = request.result
86+
console.log('Name: ' + request.result.name)
87+
console.log('Age: ' + request.result.age)
88+
console.log('Email: ' + request.result.email)
89+
} else {
90+
console.log('未获得数据记录')
91+
}
92+
}
93+
}
94+
95+
const updateData = () => {
96+
let request = db
97+
.transaction(['person'], 'readwrite')
98+
.objectStore('person')
99+
.put({ id: 1, name: '李四', age: 35, email: '[email protected]' })
100+
101+
request.onsuccess = function (event) {
102+
console.log('数据更新成功')
103+
}
104+
105+
request.onerror = function (event) {
106+
console.log('数据更新失败')
107+
}
108+
}
109+
const deleteData = () => {
110+
let request = db.transaction(['person'], 'readwrite').objectStore('person').delete(1)
111+
112+
request.onsuccess = function (event) {
113+
console.log('数据删除成功')
114+
}
115+
}
116+
</script>
117+
118+
<style scoped lang="scss"></style>

src/views/electron/NedbDemo.vue

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
<template>
2+
<div class="scroll-y">
3+
<br />
4+
<button @click="addData()">增加数据</button>
5+
6+
<br />
7+
8+
<br />
9+
<button @click="updateData()">编辑数据</button>
10+
11+
<br />
12+
13+
<br />
14+
<button @click="deleteData()">删除数据</button>
15+
16+
<br />
17+
<br />
18+
<br />
19+
<button @click="findData()">查找数据</button>
20+
21+
<div class="mt-2">显示的数据</div>
22+
<div>{{ state }}</div>
23+
</div>
24+
</template>
25+
26+
<script setup>
27+
import { reactive, toRef, toRefs } from 'vue'
28+
//nedb类似于mongo的写法
29+
//官方文档: https://github.com/louischatriot/nedb
30+
const Datastore = require('nedb')
31+
const db = new Datastore({
32+
autoload: true,
33+
filename: './nedbStore.db'
34+
})
35+
36+
let state = reactive({
37+
msg: '首页组件',
38+
name: '',
39+
age: '',
40+
list: []
41+
})
42+
const { msg, age, name, list } = toRefs(state)
43+
44+
const findData = () => {
45+
//查找数据
46+
// db.find({"age":30}, (err, docs)=>{
47+
// if(err){
48+
// console.log(err);
49+
// return;
50+
// }
51+
// console.log(docs);
52+
// state.list=docs;
53+
// })
54+
db.find({}, (err, docs) => {
55+
if (err) {
56+
console.log(err)
57+
return
58+
}
59+
console.log(docs)
60+
state.list = docs
61+
})
62+
}
63+
const addData = () => {
64+
//获取表单数据
65+
console.log(state.name, state.age)
66+
db.insert({ name: state.name, age: state.age }, function (err, doc) {
67+
if (err) {
68+
console.log(err)
69+
return
70+
}
71+
console.log(doc)
72+
})
73+
}
74+
const updateData = () => {
75+
db.update({ _id: 'cHODtJOIft1YcOMN' }, { $set: { name: '赵六' } }, function (err, data) {
76+
if (err) {
77+
console.log(err)
78+
return
79+
}
80+
console.log(data)
81+
})
82+
}
83+
const deleteData = () => {
84+
db.remove({ _id: '6nAYPLImXRs7mB0P' }, {}, function (err, data) {
85+
if (err) {
86+
console.log(err)
87+
return
88+
}
89+
console.log(data)
90+
})
91+
}
92+
</script>
93+
94+
<style scoped lang="scss"></style>

0 commit comments

Comments
 (0)