Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jettcalleja/csv-validator
nodejs validator for csv file
https://github.com/jettcalleja/csv-validator
csv csv-validator nodejs validator
Last synced: 3 months ago
JSON representation
nodejs validator for csv file
- Host: GitHub
- URL: https://github.com/jettcalleja/csv-validator
- Owner: jettcalleja
- License: mit
- Created: 2017-11-01T05:08:39.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2023-04-19T09:37:36.000Z (almost 2 years ago)
- Last Synced: 2024-11-05T02:17:33.484Z (3 months ago)
- Topics: csv, csv-validator, nodejs, validator
- Language: JavaScript
- Homepage:
- Size: 57.6 KB
- Stars: 3
- Watchers: 3
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# `csv-validator`
nodejs validator for csv file
# Features
* Parse csv (supports only file as of now) and convert to json array
* Validate each line with type or RegExp
* Return each line's error with error message
* Support callback and promise
* Non-blocking parsing# Install
```sh
npm install csv-validator --save
```# Example
Without errors:
```javascript
/** csv file
name,phone,email,country
john,123,[email protected],PH
doe,456,[email protected],US
*/const csv = require('csv-validator');
const csvFilePath = '';
const headers = {
name: '', // any string
phone: 1, // any number
email: /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/, // RegExp
_country: '' // add '_' as first character of the key to indicate as optional
};csv(csvFilePath, headers)
.then(console.log) // [ { name: 'john', phone: '123', email: '[email protected]', country: 'PH' }, { name: 'doe', phone: '456', email: '[email protected]', country: 'US' } ]
```With error:
```javascript
/** csv file
name,phone,email,country
john,123a,[email protected],PH
doe,456,[email protected]
*/const csv = require('csv-validator');
const csvFilePath = '';
const headers = {
name: '', // any string
phone: 1, // any number
email: /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/, // RegExp
country: '' // add '_' as first character of the key to indicate as optional
};csv(csvFilePath, headers)
.then(console.log)
.catch(console.error) // [ 'Row 1: phone must be a type number', 'Row 2: country is required' ]
```Error messages:
* **... must be a type number**: the column should be a number
* **... is required**: the column should be filled
* **... must be in /^[0-9]?.*/**: the column should be in RegExp (in this example: /^[0-9]?$/)# Contribution
* Any pull request for new features and bug fixes is appreciated.
* Just make sure to add test.# LICENSE
MIT