nedb多表使用实例

本文通过代码示例介绍了nedb在JavaScript前端应用中的多表使用方法,强调了nedb每个表对应一个独立文件的特点。
摘要由CSDN通过智能技术生成

nedb是一个表对应一个文件,使用时需要注意,下面直接上代码说明了
index.js

import Datastore from 'nedb'
import path from 'path'
class DB {
    constructor () {
     
        if (DB.prototype.__Instance === undefined) {
            DB.prototype.__Instance = this
            this.init()
          }
          return DB.prototype.__Instance.db;
    }
    init(){
        this.db={};
        var carDriverDB = new Datastore({
            autoload: true,
            filename: path.join(__userData,'db/carDriverDB.db')
        })//
        var carDB = new Datastore({
            autoload: true,
            filename: path.join(__userData,'db/carFlightDB.db')
        })//

        this.db.carDriverDB=carDriverDB;
        this.db.carDB=carDB;
    }
}

// 单例模式

export default new DB();
  

db.js

const Datastore = require('nedb');
 
function DB(database) {
    let options = {
        filename: database,
        autoload: true,
    };
    this.db = new Datastore(options);
}
 
DB.prototype.limit = function(offset, limit) {
    this.offset = offset || 0;
    this.limit = limit || 15;
    return this;
}
 
DB.prototype.sort = function(orderby) {
    this.orderby = orderby;
    return this;
}
 
DB.prototype.find = function(query, select) {
    return new Promise((resolve, reject) => {
        let stmt = this.db.find(query || {});
        if (this.orderby !== undefined) {
            stmt.sort(this.orderby);
        }
        if (this.offset !== undefined) {
            stmt.skip(this.offset).limit(this.limit);
        }
        if (select != undefined) {
            stmt.projection(select || {});
        }
        stmt.exec((err, docs) => {
            if (err) {
                return reject(err);
            }
            resolve(docs);
        })
    })
};
 
DB.prototype.findOne = function(query, select) {
    return new Promise((resolve, reject) => {
        let stmt = this.db.findOne(query || {});
        if (this.sort !== undefined) {
            stmt.sort(this.sort);
        }
        if (select != undefined) {
            stmt.projection(select || {});
        }
        stmt.exec((err, doc) => {
            if (err) {
                return reject(err);
            }
            resolve(doc);
        })
    })
}
 
DB.prototype.insert = function(values) {
    return new Promise((resolve, reject) => {
        this.db.insert(values, (err, newDoc) => {
            if (err) {
                return reject(err);
            }
            resolve(newDoc);
        })
    })
}
 
DB.prototype.update = function(query, values, options) {
    return new Promise((resolve, reject) => {
        this.db.update(query || {}, values || {}, options || {}, (err, numAffected) => {
            if (err) {
                return reject(err);
            }
            resolve(numAffected);
        })
    });
}
 
DB.prototype.remove = function(query, options) {
    return new Promise((resolve, reject) => {
        this.db.remove(query || {}, options || {}, (err, numAffected) => {
            if (err) {
                return reject(err);
            }
            resolve(numAffected);
        })
    });
}
 
export default DB;

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210119110910313.png)

引入如下

import db from './db'
Vue.prototype.$db = db;
//使用方法
 this.$db.carFlightDB
        .find({ planDate: that.planDate })
        .sort({ findex: 1, orderbyField: 1, _id: 1 })
        .exec(function(err, docs) {
          if (err) {
            console.log(err);
          }
          that.flightList = docs;//把结果赋值

        });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值