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 |
|
7 | Via npm:
|
8 |
|
9 | ```bash
|
10 | npm install clever
|
11 | ```
|
12 |
|
13 | ## Usage
|
14 |
|
15 | ```javascript
|
16 | Clever = require('clever');
|
17 | var clever = Clever({token: 'YOUR_BEARER_TOKEN'});
|
18 | ```
|
19 | If you'd like to play around with our test data, please use the token: `DEMO_TOKEN`.
|
20 | See [our developer guide](https://clever.com/developers/docs) for more information.
|
21 |
|
22 | To use the outdated API key authentication method (not recommended!) pass the key when instantiating:
|
23 | ```javascript
|
24 | var clever = Clever('YOUR_API_KEY');
|
25 | ```
|
26 |
|
27 | The `clever` package exposes objects corresponding to resources:
|
28 |
|
29 | * District
|
30 | * School
|
31 | * Section
|
32 | * Student
|
33 | * Teacher
|
34 | * Event
|
35 |
|
36 | Each 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
|
39 | clever.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 |
|
45 | clever.School.findOne({ name: "Clever Academy" }, function(error, school) {
|
46 | assert(school instanceof clever.School);
|
47 | assert.equal(school.get('name'), 'Clever Academy');
|
48 | });
|
49 |
|
50 | clever.School.findById('4fee004cca2e43cf27000001', function(error, school) {
|
51 | assert(school instanceof clever.School);
|
52 | assert.equal(school.get('name'), 'Clever Academy');
|
53 | });
|
54 | ```
|
55 |
|
56 | When no callback is passed, the methods return a query object that allows you to build up a query over time:
|
57 |
|
58 | ```javascript
|
59 | clever.School
|
60 | .find()
|
61 | .where('name').equals('Clever Academy')
|
62 | .exec(callback);
|
63 | ```
|
64 |
|
65 | Query 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
|
69 | var count = 0;
|
70 | var stream = clever.Section.find().limit(10).stream();
|
71 | stream.on('data', function(section) {
|
72 | count += 1;
|
73 | assert(section instanceof clever.Section);
|
74 | });
|
75 | stream.on('end', function() {
|
76 | console.log(count, 'sections loaded');
|
77 | });
|
78 | ```
|
79 |
|
80 | ## Feedback
|
81 |
|
82 | Questions, feature requests, or feedback of any kind is always welcome! We're available at [tech-support@clever.com](mailto:tech-support@clever.com).
|