3.2.0 • Published 7 years ago
gabriel-hildebrandt-mongoose-datatables v3.2.0
mongoose-datatables
Server side table request.
Installation
$ npm install mongoose-datatablesUsage
Configure the plugin in your model
var mongoose = require('mongoose')
var dataTables = require('mongoose-datatables')
var Schema = mongoose.Schema
var UserSchema = new Schema({
first_name: String,
last_name: String,
username: String
})
UserSchema.plugin(dataTables)Use plugin in your route
app.post('/table', (req, res) {
User.dataTables({
limit: req.body.length,
skip: req.body.start,
search: {
value: req.body.search.value,
fields: ['username']
},
sort: {
username: 1
}
}).then(function (table) {
res.json(table); // table.total, table.data
})
});API
plugin(options)
options.totalKey(String) - Default totaloptions.dataKey(String) - Default dataoptions.formatters(Object) - Specifies multiple formatters that can be used in the query
dataTables(options, callback)
options.limit(Number) - Specifies mongo limit.options.skip(Number) - Specifies mongo skip.options.find(Object) - Specifies selection criteria.options.select(Object) - Specifies the fields to return.options.sort(Object) - Specifies the order in which the query returns matching documents.options.order,options.columns(Array), (Array) - Specifies the order in which the query returns matching documents and replace the sort optionoptions.search(Object) - Search.options.populate(Object) - Specifies models to populate.options.formatter(String|Function) - Specifies formatter to use after the query.
Formaters
At query level
User.dataTables({
limit: 20,
formatter: function(user) {
return {
name: user.first_name + ' ' + user.last_name
}
}
})At schema level
UserSchema.plugin(dataTables, {
formatters: {
toPublic : function (user) {
return {
name: user.first_name + ' ' + user.last_name
}
}
}
});Use by doing this at query level
User.dataTables({
limit: 20,
formatter: 'toPublic',
})Note: if you use formatters you get an array of objects on data, instead of the model instance.
License
MIT
3.2.0
7 years ago