當前位置 主頁 > 網站技術 > 代碼類 > 最大化 縮小

    nodejs nedb 封裝庫與使用方法示例

    欄目:代碼類 時間:2020-02-06 15:09

    本文實例講述了nodejs nedb 封裝庫與使用方法。分享給大家供大家參考,具體如下:

    libs/nedb.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);
        })
      });
    }
    module.exports = (database) => {
      return new DB(database);
    }
    
    

    test.js

    const db = require('./libs/nedb')('testdb');
    (async function() {
     await db.insert({number: 12});
     await db.insert({number: 11});
     await db.insert({number: 13});
     let res = await db.sort({number: -1}).limit(0, 2).find();
     console.log(res);
    })();
    
    

    執行命令

    nodemon test.js
    
    

    希望本文所述對大家node.js程序設計有所幫助。

777亚洲人成视频免费视频