# pusudb-use-ejs

> A ejs middleware for the pusudb-framework.

Latest version **1.2.0** (published 2018-12-22) · MIT license · 0 weekly downloads

## Install

```sh
npm install pusudb-use-ejs
pnpm add pusudb-use-ejs
yarn add pusudb-use-ejs
bun add pusudb-use-ejs
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.2.0 |
| Published | 2018-12-22 |
| First published | 2018-11-07 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 2 |
| Unpacked size | 10.5 KB |
| Known vulnerabilities | 0 (+2 in 1 direct dependencies) |
| Install scripts | no |
| Author | yannick grund, https://github.com/yamigr |
| Maintainers | yamigr |
| Keywords | pusuDB, pusudb, server, middleware, extension, web, http, html, webpage, IoT, frameworks, framework, backend, ejs, webservice, REST, ejs, view, engine |

## Links

- npm: https://www.npmjs.com/package/pusudb-use-ejs
- Homepage: https://github.com/yamigr/pusudb-use-ejs#readme
- npm.io page: https://npm.io/package/pusudb-use-ejs

## Dependencies (2)

- [ejs](https://npm.io/package/ejs.md) ^2.6.1
- [findfile-in-folder-by-pathname](https://npm.io/package/findfile-in-folder-by-pathname.md) 0.0.7

## Alternatives

- [@tsparticles/shape-image](https://npm.io/package/@tsparticles/shape-image.md) — 303.7K weekly downloads
- [@tsparticles/shape-line](https://npm.io/package/@tsparticles/shape-line.md) — 233.7K weekly downloads
- [stringify-attributes](https://npm.io/package/stringify-attributes.md) — 58.6K weekly downloads
- [mobile-drag-drop](https://npm.io/package/mobile-drag-drop.md) — 46.3K weekly downloads
- [@comunica/actor-rdf-parse-html](https://npm.io/package/@comunica/actor-rdf-parse-html.md) — 29.2K weekly downloads

## Recent versions

- 1.2.0 (latest) — 2018-12-22
- 1.1.6 — 2018-12-21
- 1.1.5 — 2018-12-19
- 1.1.4 — 2018-12-19
- 1.1.3 — 2018-12-19
- 1.1.2 — 2018-12-19
- 1.1.1 — 2018-12-19
- 1.1.0 — 2018-12-19
- 1.0.5 — 2018-12-18
- 1.0.4 — 2018-12-12
- 1.0.3 — 2018-11-21
- 1.0.2 — 2018-11-19
- 1.0.1 — 2018-11-18
- 1.0.0 — 2018-11-18
- 0.0.18 — 2018-11-17
- … 17 more at https://npm.io/package/pusudb-use-ejs/versions

## README

# pusudb-use-ejs

> Middleware to serve ejs view-engine files with the pusudb-framework.

Pusudb-filehandler to rendering [ ejs-files ]( https://ejs.co/).

Framework: [ pusudb ](https://www.npmjs.com/package/pusudb)

<a name="installing"></a>
## Installing

```sh
npm install pusudb-use-ejs --save
```

## Use
Define the path where the ejs-files are located. Define some url's which should be escaped like the pure api-query. To define a url-prefix use the option prefix.

```js
const Pusudb = require('pusudb')
const pusudb = new Pusudb(3000, 'localhost', { log : true, prefix : '/api'})

const Render = require('pusudb-use-ejs')
const render = new Render(__dirname + '/ejs', ['/public', '/api'/*, blocked pathnames */], { prefix : '/ejs' /*, ejs-options, see ejs-docs */ }) 

//add the middleware to the pusudb
pusudb.use('http', render.serve)

pusudb.listen(function(port, host){
    console.log('pusudb listening:', port, host)
})
```

### Single query and use data in ejs
* http://localhost:3000/ejs/index/api/db/stream
* <%= data => and <%= err => in ejs-file

### Multiple queries and use data in ejs
* http://localhost:3000/ejs/index/api/select/list?nav=db,stream&user=db,get,key+person:AEYC8Y785 
* <%= nav => and <%= user => in ejs-file

### Add render-data in instance
Reserved props are err, db, meta and data. Use the props in ejs-file like <%= title %>.

```js
// Set global data for any
render.setRenderGlobalData({ title : 'Page-Title', description : '42.'})
console.log( render.getRenderGlobalData() )

// Set data per file
render.setRenderFileData('index.ejs', { content : 'Some content', page : 'Index'})
render.setRenderFileData('contact.ejs', { address : '...', phone : '....'})
console.log( render.getRenderFileData() )

```

### Add render-data in a pusudb-middleware
Add some props to req.docs and use the data in the ejs-file.

```js
pusudb.useBefore('http', function(req, res, next){
    if(!req.url.startsWith('/api')){
        req.render['ticker'] = 'You can now use <%= ticker %> in the ejs-file'
        req.render['lang'] = 'de'  // in ejs <%= lang %>
        req.render['title'] = 'PUSUDB-STUDIO' // in ejs <%= title %>
        req.render['scripts'] = [] // add some script paths and loop the array in ejs
        req.render['styles'] = []
        req.render['favicon'] = '/public/images/favicon.ico'  // in ejs <%= favicon %>
        next() 
    }
    else{
        next() 
    }
})
```

### HTML Example
URL: 'http://localhost:3000/[middleware-prefix]/[filename]/[pusudb-prefix]/[database-name]/[meta]'
Example: 'http://localhost:3000/ejs/index/api/db/stream'

```html
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title></title>
  <meta name="author" content="">
  <meta name="description" content="">
  <meta name="viewport" content="width=device-width, initial-scale=1">
</head>

<body>

  <p>Hello, world!</p>
  <p><%= JSON.stringify(data) %></p>

</body>

</html>
```
<a name="authors"></a>

## Authors

* **Yannick Grund** - *Initial work* - [yamigr](https://github.com/yamigr)

<a name="license"></a>

## License

This project is licensed under the MIT License

---
_Source: https://npm.io/package/pusudb-use-ejs · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
