@tvux/hmmjs

2.69.420 • Public • Published

hmmjs

Tired of REST api definition? Wanna go fast? Hmm come to help.

With Hmm, you can query your data in db from front-end side. No more API call required.

Mongodb driver, mongoose supported (Read executor.*.test.js for example)

Get rid of a ton of bored API end-points:

Just define one and only one end-point for transfering hmm payload between client side and server side.

// server side
const client = new MongoClient('mongodb://localhost:27017');
// - you can define which db interface user will use (mongodb native driver/mongoose/etc) 
// - you can also define which db user will use:
//   - for e.g: user1 use db A, user2 use db B
const database = client.db('hmm')
const dbDriver = new Proxy({}, {
    get(__, p) {return database.collection(p)}
})
const hmm = executorFac(dbDriver, { logLevel: 'log' })
const app = express()
app.post(
    '/api', 
    /*use can add authorization at this middleware*/
    bodyParser.raw({limit: '50mb', type: () => true}),
    async (req, res) =>
        hmm(jsonFn.parse(req.body.toString()))
            .then(rs => res.json(rs))
            .catch(e => res.status(400).send(e.message)));
app.listen(3000)

Then query directly from front-end side or serverless app as simple as below.

<script>
  // browser
  window.onload = async () => {
    const url = 'http://localhost:3000/api'
    const send = async (payload) => {
      const {data} = await axios.post(url, JSONfn.stringify(payload))
      return data
    }
    const Model = HmmBuilder(send)
    await Model('user').insertOne({user: 'admin', password: '123'})
    const admin = await Model('user').findOne({user: 'admin'})
    console.log('admin', admin)
  }
</script>

Playaround

npm i && npm run dev

You may get 0 result if your db doesn't have the object id as my Db.

Roadmap

  • Explore more use cases & edge cases.

Readme

Keywords

none

Package Sidebar

Install

npm i @tvux/hmmjs

Weekly Downloads

30

Version

2.69.420

License

ISC

Unpacked Size

2.58 MB

Total Files

15

Last publish

Collaborators

  • tvux