Skip to content

wclr/cycle-mongoose

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mongoose-cycle

Mongoose.js driver for Cycle.js. Tested and ready.

(Almost) real world example:

import {run} from '@cycle/core'
import {makeMongooseDriver} from '@cycle-drivers/mongoose'
import {from, merge} from 'rx-factory'

const SendVerificationEmails = ({db, emails, schedule}) => {
  // pool database every 30 seconds
  let dbRequestSchedule$ = schedule.get('*/30 * * * * *').startWith('')
  return {
    // send emails for found records
    emails: db.select('find', _ => _)
        .success(found => from(found)).mergeAll()
      .map(({email, id}) => ({
        id,
        to: email,
        template: 'verify',
        params: {
          verifyLink: process.env.VERIFICATION_URL + '/' + id
        }
      })),
    db: merge([
      // find verification records not sent
      dbRequestSchedule$.map(({
        Model: 'Verification',
        find: {sent: {$exists: false}}
      })),
      // update verificaiton record in db after send
      emails.success((_, {id}) => ({
        Model: 'Verification',
        findByIdAndUpdate: [id, {sent: new Date()}]
      }))
    ]),
    log: db.select('find', _ => _)
      .success(found => `Found ${found.length} verification records to send`)
  }
}

run(SendVerificationEmails, {
  schedule: scheduleDriver,
  emails: emailsDriver,
  db: makeMongooseDriver(MONGO_URL, /* connection options */),
  log: (message$) => message$.forEach(::console.log) 
})

For other query methods see tests.

npm install cycle-mongoose -S

About

Mongoose.js driver for Cycle.js.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published