UNPKG

2.27 kBMarkdownView Raw
1# Clever Javascript Library
2
3[![Build Status](https://secure.travis-ci.org/Clever/clever-js.png)](http://travis-ci.org/Clever/clever-js)
4
5## Installation
6
7Via npm:
8
9```bash
10npm install clever
11```
12
13## Usage
14
15```javascript
16Clever = require('clever');
17var clever = Clever({token: 'YOUR_BEARER_TOKEN'});
18```
19If you'd like to play around with our test data, please use the token: `DEMO_TOKEN`.
20See [our developer guide](https://clever.com/developers/docs) for more information.
21
22To use the outdated API key authentication method (not recommended!) pass the key when instantiating:
23```javascript
24var clever = Clever('YOUR_API_KEY');
25```
26
27The `clever` package exposes objects corresponding to resources:
28
29* District
30* School
31* Section
32* Student
33* Teacher
34* Event
35
36Each exposes a query API that closely resembles that of [Mongoose](http://mongoosejs.com/docs/queries.html). The available methods are `find`, `findOne`, and `findById`:
37
38```javascript
39clever.District.find({}, function(error, districts) {
40 assert(Array.isArray(districts));
41 assert(districts[0] instanceof clever.District);
42 assert.equal(district.get('name'), 'Demo District');
43});
44
45clever.School.findOne({ name: "Clever Academy" }, function(error, school) {
46 assert(school instanceof clever.School);
47 assert.equal(school.get('name'), 'Clever Academy');
48});
49
50clever.School.findById('4fee004cca2e43cf27000001', function(error, school) {
51 assert(school instanceof clever.School);
52 assert.equal(school.get('name'), 'Clever Academy');
53});
54```
55
56When no callback is passed, the methods return a query object that allows you to build up a query over time:
57
58```javascript
59clever.School
60.find()
61.where('name').equals('Clever Academy')
62.exec(callback);
63```
64
65Query objects also support a [stream](http://nodejs.org/api/stream.html) interface for auto-pagination:
66
67```javascript
68// pull sections 10 at a time
69var count = 0;
70var stream = clever.Section.find().limit(10).stream();
71stream.on('data', function(section) {
72 count += 1;
73 assert(section instanceof clever.Section);
74});
75stream.on('end', function() {
76 console.log(count, 'sections loaded');
77});
78```
79
80## Feedback
81
82Questions, feature requests, or feedback of any kind is always welcome! We're available at [tech-support@clever.com](mailto:tech-support@clever.com).