• Electron-Vue 操作本地数据库nedb


    electron应用操作数据的几种方法:
        1、远程api接口      (多个客户端公用一套数据)  *
        2、连接远程数据库    (局域网内使用  多个客户端公用一套数据 )  (不建议使用)
        3、连接本地数据库   (nedb    sqlite)     应用本地保存数据(localstore   5M)     用户设置信息        qq聊天记录
    electron-vue读写本地数据库文件
        https://simulatedgreg.gitbooks.io/electron-vue/content/cn/savingreading-local-files.html  
    electron app模块详细:
        https://www.w3cschool.cn/electronmanual/electronmanual-electronapp.html
    Nedb 数据库文档:
        https://github.com/louischatriot/nedb
        nedb数据库和mongodb数据库的操作方法几乎一模一样。   
    electron-vue中使用Nedb 数据库。
        1、安装nedb数据库
            cnpm install nedb --save
        2、新建一个src/render/datastore.js
            import Datastore from 'nedb'
            import path from 'path'
            import { remote } from 'electron'
            export default new Datastore({
                  autoload: true,
                  filename: path.join(remote.app.getPath('userData'), '/data.db')
            })
    
        3、src/renderer/main.js
            import db from './datastore.js'
            /* 其它代码 */
        
            Vue.prototype.$db = db
        4、在vue的组件里面实现数据的增加 修改 删除 显示      
            this.$db.insert({},function(){
            })
    
            this.$db.find({},function(){
                //获取查询的数据
    
            })
            this.$db.update({条件},{$set:{更改的数据}},function(){
                
            })
            this.$db.remove({条件},{},function(){
                
            })
           

     示例代码:

    home.vue

    <template>
      <div id="home">
       
            
    
            <input type="text" v-model="name" placeholder="姓名"/>
    
    
            <input type="text" v-model="age" placeholder="年龄"/>
    
    
    
    
           
             
            <br>
            <button @click="addData()">增加数据</button>
    
            <br>
             
            <br>
            <button @click="updateData()">编辑数据</button>     
    
            <br>
             
            <br>
            <button @click="deleteData()">删除数据</button>
    
    
             <br><br><br>
            <button @click="findData()">查找数据</button>
           
            <br>
    
            <ul>
                <li v-for="item in list">
    
                   {{item._id}}--  {{item.name}}-----{{item.age}}
                </li>
            </ul>
         
      </div>
    </template>
    
    
    <script>    
    
    
        export default{
    
            data(){
    
                return {
                    msg:'首页组件',
                    name:'',
                    age:'',
                    list:[]
                }
            },
            methods:{
    
                findData(){
                    //查找数据
    
                    // this.$db.find({"age":30},  (err, docs)=>{
    
                    //         if(err){
    
                    //             console.log(err);
                    //             return;
                    //         }
    
                    //         console.log(docs);
    
                    //         this.list=docs;
                    // })
    
    
                     this.$db.find({},  (err, docs)=>{
    
                            if(err){
    
                                console.log(err);
                                return;
                            }
    
                            console.log(docs);
    
                            this.list=docs;
                    })
                },
                addData(){
                    //获取表单数据
    
                    console.log(this.name,this.age);
    
    
                    //https://github.com/louischatriot/nedb
    
                    this.$db.insert({"name":this.name,"age":this.age},function(err,doc){
    
                            if(err){
    
                                console.log(err);
                                return;
                            }
                            console.log(doc);
                    })
                },
                updateData(){
                    
    
                        // this.$db.update({"name":"wangwu","age":30},{$set:{"name":"王五"}},function(err,data){
                        //     if(err){
    
                        //         console.log(err);
                        //         return;
                        //     }
                        //     console.log(data);
    
                        // })
    
                        this.$db.update({"_id":"cHODtJOIft1YcOMN"},{$set:{"name":"赵六"}},function(err,data){
                            if(err){
    
                                console.log(err);
                                return;
                            }
                            console.log(data);
    
                        })
    
                        
    
                },
                deleteData(){
                        
                        this.$db.remove({"_id":"6nAYPLImXRs7mB0P"},{},function(err,data){
                            if(err){
    
                                console.log(err);
                                return;
                            }
                            console.log(data);
    
                        })
    
                }
            }
    
        }
    </script>

    new.vue

    <template>
      <div id="news">
       新闻组件
        <br>
            <button @click="runNode()">使用nodejs的fs模块</button>
    
    
    
            
            <ul>
                <li v-for="item in list">
    
                   {{item._id}}--  {{item.name}}-----{{item.age}}
                </li>
            </ul>
    
    
      </div>
    </template>
    
    
    <script>    
    
        var fs=require('fs');
    
        export default{
    
            data(){
    
                return {
    
                    msg:'我是新闻页面',
                    list:[]
    
                }
            },
            methods:{
    
                runNode(){
    
                        fs.readFile('package.json',(err,data)=>{
                            if(err){
    
                                console.log(err);
                                return;
                            }
    
                            console.log(data.toString());
                        })  
    
                        
                }
            },
            mounted() {
                    this.$db.find({},  (err, docs)=>{
    
                            if(err){
    
                                console.log(err);
                                return;
                            }
    
                            console.log(docs);
    
                            this.list=docs;
                    })
            }
    
        }
    </script>

    datastore.js

    import Datastore from 'nedb';
    import path from 'path';
    import { remote } from 'electron';
    
    export default new Datastore({
        autoload: true,
        filename: path.join(remote.app.getPath('userData'), '/data.db')  //指定数据库文件路径
    
        // 路径参考https://www.w3cschool.cn/electronmanual/electronmanual-electronapp.html
    })

    main.js

    import Vue from 'vue'
    import axios from 'axios'
    
    import App from './App'
    import router from './router'
    
    
    
    //实例化db库
    import db from './datastore.js'
    /* 其它代码 */ Vue.prototype.$db = db; if (!process.env.IS_WEB) Vue.use(require('vue-electron')) Vue.http = Vue.prototype.$http = axios Vue.config.productionTip = false /* eslint-disable no-new */ new Vue({ components: { App }, router, template: '<App/>' }).$mount('#app')
    最后,关注【码上加油站】微信公众号后,有疑惑有问题想加油的小伙伴可以码上加入社群,让我们一起码上加油吧!!!
  • 相关阅读:
    SQL中内连接和外连接
    MySQL执行计划解读
    排序算法
    Edge浏览器安装sci-hub插件及使用教程
    MATLAB R2020B 使用教学——窗口布局设置
    PHP半年了,已经可以独立支撑项目,几点心得记录
    看1000行代码不如自己写10行代码
    PHP逻辑运算符中的and和&&以及or和||是有区别的
    自学PHP的野方法
    PHP中SQL查询语句的id=%d解释
  • 原文地址:https://www.cnblogs.com/loaderman/p/12173453.html
Copyright © 2020-2023  润新知