mio-mongo v0.11.4
mio-mongo

MongoDB storage plugin for Mio.
Install using npm:
npm install mio-mongoUsage
var mio = require('mio');
var MongoDB = require('mio-mongo');
var User = mio.Resource.extend({
attributes: {
_id: {
primary: true,
objectId: true
}
}
});
User.use(MongoDB({
url: 'mongodb://db.example.net:2500',
collection: 'Users'
}));
User.Collection.get()
.where({ active: true })
.sort({ createdAt: 1 })
.exec(function (err, users) {
users.at(0).set({ active: false }).patch(function (err) {
// ...
});
});ObjectIDs
Automatically stringify and cast ObjectId's by setting objectId: true.
var User = mio.Resource.extend({
attributes: {
companyId: {
objectId: true
}
}
});
User.find({
companyId: '547dfc2bdc1e430000ff13b0'
}).exec(function (err, user) {
console.log(typeof user.companyId); // => "string"
});Relations
Post.belongsTo('author', {
target: User,
foreignKey: 'authorId'
});
User.hasMany('posts', {
target: Post,
foreignKey: 'authorId'
});
// fetch posts for user `123`
Post.Collection.get()
.where({ 'author.id': 123 })
.exec(function (err, posts) {
// ...
});
// fetch users with their posts included
User.Collection.get()
.withRelated('posts')
.exec(function (err, users) {
users.pop().posts;
});Aliases
var User = mio.Resource.extend({
attributes: {
name: {
alias: 'fullName'
}
}
});
// MongoDB query uses "fullName"
User.find({ name: 'Alex' }).exec(...);Mongo client
Access the mongo client directly via Resource.options.mongo.db and the
resource's collection via Resource.options.mongo.dbCollection.
API Reference
mio-mongo
module.exports(settings) ⇒ function ⏏
It is recommended to share the same settings.db object between
different resources so they can share the same mongo client and connection
pool.
A connection to mongo will be established automatically before any query is run.
If you'd like to use the mongo client directly, the db is available via
Resource.options.mongo.db.
Kind: Exported function
Returns: function - returns Mio plugin
| Param | Type | Description |
|---|---|---|
| settings | Object | |
| settings.collection | String | mongodb collection for this resource |
| settings.connectionString | String | mongodb connection string. required if settings.db is not provided. |
| settings.connectionOptions | Object | mongodb connection options |
| settings.db | mongodb.MongoClient.Db | reuse node-mongo-native db connection |
module.exports~prepareResource(resource, attributes) ⇒ Object
Prepare resource attributes.
- Translate attribute aliases
- Stringify ObjectIDs
- Remove undefined attributes
Kind: inner method of module.exports
| Param | Type |
|---|---|
| resource | Resource |
| attributes | Object |
"mongodb:query" (query)
Emitted with query argument whenever a query is received and before it
is processed, to allow for transformation.
Kind: event emitted by module.exports
| Param | Type |
|---|---|
| query | Object |
"mongodb:collection" (collection)
Emitted whenever a collection of resources is returned. Collections returned
by mio-mongo include size and from pagination properties.
Kind: event emitted by module.exports
| Param | Type |
|---|---|
| collection | external:mio.Resource.Collection |
| collection.from | Number |
| collection.size | Number |
Events
Contributing
Please submit all issues and pull requests to the mio/mongo repository!
Tests
Run tests using npm test or gulp test.
Code coverage
Generate code coverage using gulp coverage and open coverage.html in your
web browser.
Support
If you have any problem or suggestion please open an issue here.
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago