1.0.10 • Published 1 month ago

w-orm-mdb v1.0.10

Weekly downloads
10
License
MIT
Repository
github
Last release
1 month ago

w-orm-mdb

An operator for access mdb database in nodejs.

language npm version license gzip file size npm download npm download jsdelivr download

Documentation

To view documentation or get support, visit docs.

Installation

Using npm(ES6 module):

Note: w-orm-mdb is mainly dependent on node-adodb and w-orm-reladb.

npm i w-orm-mdb

Example by js settings

Link: [dev source code]

import fs from 'fs'
import wo from 'w-orm-mdb'

let username = '' let password = '' let opt = { url: mdb://${username}:${password}, db: 'worm', cl: 'users', fdModels: './models', // modelType: 'js', //default // autoGenPK: false, storage: './worm.mdb', }

//因worm.mdb可能被修改, 先刪除再由worm_def.mdb複製一份來用 if (fs.existsSync(opt.storage)) { fs.unlinkSync(opt.storage) } fs.copyFileSync('./worm_def.mdb', opt.storage)

let rs = { id: 'id-peter', name: 'peter', value: 123, }, { id: 'id-rosemary', name: 'rosemary', value: 123.456, }, { id: '', name: 'kettle', value: 456, },

let rsm = { id: 'id-peter', name: 'peter(modify)' }, { id: 'id-rosemary', name: 'rosemary(modify)' }, { id: '', name: 'kettle(modify)' },

async function test() { //測試mdb

//w
let w = wo(opt)


//on
w.on('change', function(mode, data, res) {
    console.log('change', mode)
})
w.on('error', function(err) {
    console.log('error', err)
})


//delAll
await w.delAll()
    .then(function(msg) {
        console.log('delAll then', msg)
    })
    .catch(function(msg) {
        console.log('delAll catch', msg)
    })


//insert
await w.insert(rs)
    .then(function(msg) {
        console.log('insert then', msg)
    })
    .catch(function(msg) {
        console.log('insert catch', msg)
    })


//save
await w.save(rsm, { autoInsert: false })
    .then(function(msg) {
        console.log('save then', msg)
    })
    .catch(function(msg) {
        console.log('save catch', msg)
    })


//select all
let ss = await w.select()
console.log('select all', ss)


//select
let so = await w.select({ id: 'id-rosemary' })
console.log('select', so)


//select by $and, $gt, $lt
let spa = await w.select({ '$and': [{ value: { '$gt': 123 } }, { value: { '$lt': 200 } }] })
console.log('select by $and, $gt, $lt', spa)


//select by $or, $gte, $lte
let spb = await w.select({ '$or': [{ value: { '$lte': -1 } }, { value: { '$gte': 200 } }] })
console.log('select by $or, $gte, $lte', spb)


//select by $or, $and, $ne, $in, $nin (access mdb not support)
let spc = await w.select({ '$or': [{ '$and': [{ value: { '$ne': 123 } }, { value: { '$in': [123, 321, 123.456, 456] } }, { value: { '$nin': [456, 654] } }] }, { '$or': [{ value: { '$lte': -1 } }, { value: { '$gte': 400 } }] }] })
console.log('select by $or, $and, $ne, $in, $nin', spc)


//select by regex
let sr = await w.select({ name: { $regex: 'PeT', $options: '$i' } })
console.log('selectReg', sr)


//del
let d = []
if (ss) {
    d = ss.filter(function(v) {
        return v.name !== 'kettle'
    })
}
await w.del(d)
    .then(function(msg) {
        console.log('del then', msg)
    })
    .catch(function(msg) {
        console.log('del catch', msg)
    })

} test().catch((err) => console.log('err:', err)) // change delAll // delAll then { n: 0, nDeleted: 0, ok: 1 } // change insert // insert then { n: 3, nInserted: 3, ok: 1 } // change save // save then // { n: 1, nModified: 1, ok: 1 }, // { n: 1, nModified: 1, ok: 1 }, // { n: 0, nModified: 0, ok: 1 } //autoInsert=false // { n: 1, nInserted: 1, ok: 1 } //autoInsert=true // // select all // { id: 'id-peter', name: 'peter(modify)', value: 123 }, // { id: 'id-rosemary', name: 'rosemary(modify)', value: 123.456 }, // { id: '{random id}', name: 'kettle', value: 456 } // // select // { id: 'id-rosemary', name: 'rosemary(modify)', value: 123.456 } // // select by $and, $gt, $lt // { id: 'id-rosemary', name: 'rosemary(modify)', value: 123.456 } // // select by $or, $gte, $lte // { id: '{random id}', name: 'kettle', value: 456 } // // select by $or, $and, $ne, $in, $nin // { id: 'id-rosemary', name: 'rosemary(modify)', value: 123.456 }, // { id: '{random id}', name: 'kettle', value: 456 } // // selectReg // { id: 'id-peter', name: 'peter(modify)', value: 123 } // // change del // del then // { n: 1, nDeleted: 1, ok: 1 }, // { n: 1, nDeleted: 1, ok: 1 } //

#### Example by json settings 
> **Link:** [[dev source code](https://github.com/yuda-lyu/w-orm-mdb/blob/main/g-json.mjs)]
```alias
import fs from 'fs'
import wo from 'w-orm-mdb'


let username = ''
let password = ''
let opt = {
    url: `mdb://${username}:${password}`,
    db: 'worm',
    cl: 'users',
    fdModels: './models',
    modelType: 'json',
    // autoGenPK: false,
    storage: './worm.mdb',
}

//因worm.mdb可能被修改, 先刪除再由worm_def.mdb複製一份來用
if (fs.existsSync(opt.storage)) {
    fs.unlinkSync(opt.storage)
}
fs.copyFileSync('./worm_def.mdb', opt.storage)

let rs = [
    {
        id: 'id-peter',
        name: 'peter',
        value: 123,
    },
    {
        id: 'id-rosemary',
        name: 'rosemary',
        value: 123.456,
    },
    {
        id: '',
        name: 'kettle',
        value: 456,
    },
]

let rsm = [
    {
        id: 'id-peter',
        name: 'peter(modify)'
    },
    {
        id: 'id-rosemary',
        name: 'rosemary(modify)'
    },
    {
        id: '',
        name: 'kettle(modify)'
    },
]

async function test() {
    //測試mdb


    //w
    let w = wo(opt)


    //on
    w.on('change', function(mode, data, res) {
        console.log('change', mode)
    })
    w.on('error', function(err) {
        console.log('error', err)
    })


    //delAll
    await w.delAll()
        .then(function(msg) {
            console.log('delAll then', msg)
        })
        .catch(function(msg) {
            console.log('delAll catch', msg)
        })


    //insert
    await w.insert(rs)
        .then(function(msg) {
            console.log('insert then', msg)
        })
        .catch(function(msg) {
            console.log('insert catch', msg)
        })


    //save
    await w.save(rsm, { autoInsert: false })
        .then(function(msg) {
            console.log('save then', msg)
        })
        .catch(function(msg) {
            console.log('save catch', msg)
        })


    //select all
    let ss = await w.select()
    console.log('select all', ss)


    //select
    let so = await w.select({ id: 'id-rosemary' })
    console.log('select', so)


    //select by $and, $gt, $lt
    let spa = await w.select({ '$and': [{ value: { '$gt': 123 } }, { value: { '$lt': 200 } }] })
    console.log('select by $and, $gt, $lt', spa)


    //select by $or, $gte, $lte
    let spb = await w.select({ '$or': [{ value: { '$lte': -1 } }, { value: { '$gte': 200 } }] })
    console.log('select by $or, $gte, $lte', spb)


    //select by $or, $and, $ne, $in, $nin (access mdb not support)
    let spc = await w.select({ '$or': [{ '$and': [{ value: { '$ne': 123 } }, { value: { '$in': [123, 321, 123.456, 456] } }, { value: { '$nin': [456, 654] } }] }, { '$or': [{ value: { '$lte': -1 } }, { value: { '$gte': 400 } }] }] })
    console.log('select by $or, $and, $ne, $in, $nin', spc)


    //select by regex
    let sr = await w.select({ name: { $regex: 'PeT', $options: '$i' } })
    console.log('selectReg', sr)


    //del
    let d = []
    if (ss) {
        d = ss.filter(function(v) {
            return v.name !== 'kettle'
        })
    }
    await w.del(d)
        .then(function(msg) {
            console.log('del then', msg)
        })
        .catch(function(msg) {
            console.log('del catch', msg)
        })


}
test().catch((err) => console.log('err:', err))
// change delAll
// delAll then { n: 0, nDeleted: 0, ok: 1 }
// change insert
// insert then { n: 3, nInserted: 3, ok: 1 }
// change save
// save then [
//   { n: 1, nModified: 1, ok: 1 },
//   { n: 1, nModified: 1, ok: 1 },
//   { n: 0, nModified: 0, ok: 1 } //autoInsert=false
//   { n: 1, nInserted: 1, ok: 1 } //autoInsert=true
// ]
// select all [
//   { id: 'id-peter', name: 'peter(modify)', value: 123 },
//   { id: 'id-rosemary', name: 'rosemary(modify)', value: 123.456 },
//   { id: '{random id}', name: 'kettle', value: 456 }
// ]
// select [
//   { id: 'id-rosemary', name: 'rosemary(modify)', value: 123.456 }
// ]
// select by $and, $gt, $lt [
//   { id: 'id-rosemary', name: 'rosemary(modify)', value: 123.456 }
// ]
// select by $or, $gte, $lte [
//   { id: '{random id}', name: 'kettle', value: 456 }
// ]
// select by $or, $and, $ne, $in, $nin [
//   { id: 'id-rosemary', name: 'rosemary(modify)', value: 123.456 },
//   { id: '{random id}', name: 'kettle', value: 456 }
// ]
// selectReg [
//   { id: 'id-peter', name: 'peter(modify)', value: 123 }
// ]
// change del
// del then [
//   { n: 1, nDeleted: 1, ok: 1 },
//   { n: 1, nDeleted: 1, ok: 1 }
// ]

Example for encryption by js settings

Link: [dev source code]

import fs from 'fs'
import wo from 'w-orm-mdb'

let username = 'username' let password = 'password' let opt = { url: mdb://${username}:${password}, //username:password db: 'worm', cl: 'users', fdModels: './models', // modelType: 'js', //default // autoGenPK: false, storage: './worm.mdb', useEncryption: true, }

//因worm.mdb可能被修改, 先刪除再由worm_encryption_def.mdb複製一份來用 if (fs.existsSync(opt.storage)) { fs.unlinkSync(opt.storage) } fs.copyFileSync('./worm_encryption_def.mdb', opt.storage) //複製加密版, 密碼為username:password

let rs = { id: 'id-peter', name: 'peter', value: 123, }, { id: 'id-rosemary', name: 'rosemary', value: 123.456, }, { id: '', name: 'kettle', value: 456, },

let rsm = { id: 'id-peter', name: 'peter(modify)' }, { id: 'id-rosemary', name: 'rosemary(modify)' }, { id: '', name: 'kettle(modify)' },

async function test() { //測試mdb

//w
let w = wo(opt)


//on
w.on('change', function(mode, data, res) {
    console.log('change', mode)
})
w.on('error', function(err) {
    console.log('error', err)
})


//delAll
await w.delAll()
    .then(function(msg) {
        console.log('delAll then', msg)
    })
    .catch(function(msg) {
        console.log('delAll catch', msg)
    })


//insert
await w.insert(rs)
    .then(function(msg) {
        console.log('insert then', msg)
    })
    .catch(function(msg) {
        console.log('insert catch', msg)
    })


//save
await w.save(rsm, { autoInsert: false })
    .then(function(msg) {
        console.log('save then', msg)
    })
    .catch(function(msg) {
        console.log('save catch', msg)
    })


//select all
let ss = await w.select()
console.log('select all', ss)


//select
let so = await w.select({ id: 'id-rosemary' })
console.log('select', so)


//select by $and, $gt, $lt
let spa = await w.select({ '$and': [{ value: { '$gt': 123 } }, { value: { '$lt': 200 } }] })
console.log('select by $and, $gt, $lt', spa)


//select by $or, $gte, $lte
let spb = await w.select({ '$or': [{ value: { '$lte': -1 } }, { value: { '$gte': 200 } }] })
console.log('select by $or, $gte, $lte', spb)


//select by $or, $and, $ne, $in, $nin (access mdb not support)
let spc = await w.select({ '$or': [{ '$and': [{ value: { '$ne': 123 } }, { value: { '$in': [123, 321, 123.456, 456] } }, { value: { '$nin': [456, 654] } }] }, { '$or': [{ value: { '$lte': -1 } }, { value: { '$gte': 400 } }] }] })
console.log('select by $or, $and, $ne, $in, $nin', spc)


//select by regex
let sr = await w.select({ name: { $regex: 'PeT', $options: '$i' } })
console.log('selectReg', sr)


//del
let d = []
if (ss) {
    d = ss.filter(function(v) {
        return v.name !== 'kettle'
    })
}
await w.del(d)
    .then(function(msg) {
        console.log('del then', msg)
    })
    .catch(function(msg) {
        console.log('del catch', msg)
    })

} test().catch((err) => console.log('err:', err)) // change delAll // delAll then { n: 0, nDeleted: 0, ok: 1 } // change insert // insert then { n: 3, nInserted: 3, ok: 1 } // change save // save then // { n: 1, nModified: 1, ok: 1 }, // { n: 1, nModified: 1, ok: 1 }, // { n: 0, nModified: 0, ok: 1 } //autoInsert=false // { n: 1, nInserted: 1, ok: 1 } //autoInsert=true // // select all // { id: 'id-peter', name: 'peter(modify)', value: 123 }, // { id: 'id-rosemary', name: 'rosemary(modify)', value: 123.456 }, // { id: '{random id}', name: 'kettle', value: 456 } // // select // { id: 'id-rosemary', name: 'rosemary(modify)', value: 123.456 } // // select by $and, $gt, $lt // { id: 'id-rosemary', name: 'rosemary(modify)', value: 123.456 } // // select by $or, $gte, $lte // { id: '{random id}', name: 'kettle', value: 456 } // // select by $or, $and, $ne, $in, $nin // { id: 'id-rosemary', name: 'rosemary(modify)', value: 123.456 }, // { id: '{random id}', name: 'kettle', value: 456 } // // selectReg // { id: 'id-peter', name: 'peter(modify)', value: 123 } // // change del // del then // { n: 1, nDeleted: 1, ok: 1 }, // { n: 1, nDeleted: 1, ok: 1 } //

1.0.10

1 month ago

1.0.9

2 months ago

1.0.8

1 year ago

1.0.7

1 year ago

1.0.6

2 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago