Socket
Socket
Sign inDemoInstall

mongoose-paginate-v2

Package Overview
Dependencies
0
Maintainers
1
Versions
57
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.2.0 to 1.2.1

4

lib/index.js

@@ -59,3 +59,2 @@ "use strict";

collation = _options.collation,
customLabels = _options.customLabels,
lean = _options.lean,

@@ -67,2 +66,5 @@ leanWithId = _options.leanWithId,

sort = _options.sort;
var customLabels = _objectSpread({}, defaultOptions.customLabels, options.customLabels);
var limit = parseInt(options.limit, 10) || 0;

@@ -69,0 +71,0 @@ var isCallbackSpecified = typeof callback === 'function';

{
"name": "mongoose-paginate-v2",
"version": "1.2.0",
"version": "1.2.1",
"description": "A cursor based custom pagination library for Mongoose with customizable labels.",

@@ -5,0 +5,0 @@ "main": "lib/index.js",

@@ -44,3 +44,3 @@ /**

...defaultOptions,
...paginate.options,
...paginate.options,
...options

@@ -52,3 +52,2 @@ };

collation,
customLabels,
lean,

@@ -61,3 +60,8 @@ leanWithId,

} = options;
const customLabels = {
...defaultOptions.customLabels,
...options.customLabels
};
const limit = parseInt(options.limit, 10) || 0;

@@ -186,2 +190,2 @@

module.exports.paginate = paginate;
module.exports.paginate = paginate;

@@ -9,13 +9,15 @@ 'use strict';

let AuthorSchema = new mongoose.Schema({ name: String });
let AuthorSchema = new mongoose.Schema({
name: String
});
let Author = mongoose.model('Author', AuthorSchema);
let BookSchema = new mongoose.Schema({
title: String,
date: Date,
price: Number,
author: {
type: mongoose.Schema.ObjectId,
ref: 'Author'
}
title: String,
date: Date,
price: Number,
author: {
type: mongoose.Schema.ObjectId,
ref: 'Author'
}
});

@@ -29,165 +31,177 @@

before(function (done) {
mongoose.connect(MONGO_URI, { useNewUrlParser: true }, done);
});
before(function (done) {
mongoose.connect(MONGO_URI, {
useNewUrlParser: true
}, done);
});
before(function (done) {
mongoose.connection.db.dropDatabase(done);
});
before(function (done) {
mongoose.connection.db.dropDatabase(done);
});
before(function () {
let book, books = [];
let date = new Date();
before(function () {
let book, books = [];
let date = new Date();
return Author.create({ name: 'Arthur Conan Doyle' }).then(function (author) {
for (let i = 1; i <= 100; i++) {
book = new Book({
// price: Math.floor(Math.random() * (1000 - 50) ) + 50,
price: (i * 5) + i,
title: 'Book #' + i,
date: new Date(date.getTime() + i),
author: author._id
});
books.push(book);
}
return Book.create(books);
});
return Author.create({
name: 'Arthur Conan Doyle'
}).then(function (author) {
for (let i = 1; i <= 100; i++) {
book = new Book({
// price: Math.floor(Math.random() * (1000 - 50) ) + 50,
price: (i * 5) + i,
title: 'Book #' + i,
date: new Date(date.getTime() + i),
author: author._id
});
books.push(book);
}
return Book.create(books);
});
});
});
afterEach(function () {
afterEach(function () {
});
});
it('promise return test', function () {
let promise = Book.paginate();
expect(promise.then).to.be.an.instanceof(Function);
});
it('promise return test', function () {
let promise = Book.paginate();
expect(promise.then).to.be.an.instanceof(Function);
});
it('callback test', function (done) {
Book.paginate({}, {}, function (err, result) {
expect(err).to.be.null;
expect(result).to.be.an.instanceOf(Object);
done();
});
});
it('callback test', function (done) {
Book.paginate({}, {}, function (err, result) {
expect(err).to.be.null;
expect(result).to.be.an.instanceOf(Object);
done();
});
});
describe('paginates', function () {
it('with limit and page', function () {
var query = {
title: {
$in: [/Book #1/i]
}
};
describe('paginates', function () {
it('with limit and page', function () {
var query = {
title: {
$in: [/Book #1/i]
}
};
var options = {
limit:0,
sort: { _id: 1 },
collation: {
locale: 'en',
strength: 2
},
lean: true
};
var options = {
limit: 0,
sort: {
_id: 1
},
collation: {
locale: 'en',
strength: 2
},
lean: true
};
return Book.paginate(query, options).then((result) => {
console.log(result);
expect(result.docs).to.have.length(0);
expect(result.totalDocs).to.equal(12);
expect(result.limit).to.equal(0);
expect(result.page).to.equal(1);
expect(result.pagingCounter).to.equal(1);
expect(result.hasPrevPage).to.equal(false);
expect(result.hasNextPage).to.equal(false);
expect(result.prevPage).to.equal(null);
expect(result.nextPage).to.equal(null);
expect(result.totalPages).to.equal(null);
});
});
return Book.paginate(query, options).then((result) => {
/*
it('with $where condition', function() {
var query = {
'$where': 'this.price < 100'
};
var options = {
sort: { price: -1},
page: 2
};
return Book.paginate(query, options ).then((result) => {
expect(result.docs).to.have.length(6);
expect(result.docs[0].title).to.equal('Book #6');
expect(result.totalDocs).to.equal(16);
expect(result.limit).to.equal(10);
expect(result.page).to.equal(2);
expect(result.pagingCounter).to.equal(11);
expect(result.hasPrevPage).to.equal(true);
expect(result.hasNextPage).to.equal(false);
expect(result.prevPage).to.equal(1);
expect(result.nextPage).to.equal(null);
expect(result.totalPages).to.equal(2);
});
});
*/
expect(result.docs).to.have.length(0);
expect(result.totalDocs).to.equal(12);
expect(result.limit).to.equal(0);
expect(result.page).to.equal(1);
expect(result.pagingCounter).to.equal(1);
expect(result.hasPrevPage).to.equal(false);
expect(result.hasNextPage).to.equal(false);
expect(result.prevPage).to.equal(null);
expect(result.nextPage).to.equal(null);
expect(result.totalPages).to.equal(null);
});
});
/*
it('with $where condition', function () {
var query = {
'$where': 'this.price < 100'
};
it('with custom labels', function () {
var options = {
sort: {
price: -1
},
page: 2
};
var query = {
title: {
$in: [/Book/i]
}
};
return Book.paginate(query, options).then((result) => {
expect(result.docs).to.have.length(6);
expect(result.docs[0].title).to.equal('Book #6');
expect(result.totalDocs).to.equal(16);
expect(result.limit).to.equal(10);
expect(result.page).to.equal(2);
expect(result.pagingCounter).to.equal(11);
expect(result.hasPrevPage).to.equal(true);
expect(result.hasNextPage).to.equal(false);
expect(result.prevPage).to.equal(1);
expect(result.nextPage).to.equal(null);
expect(result.totalPages).to.equal(2);
});
});
*/
const myCustomLabels = {
totalDocs: 'itemCount',
docs: 'itemsList',
limit: 'perPage',
page: 'currentPage',
nextPage: 'next',
prevPage: 'prev',
totalPages: 'pageCount',
pagingCounter: 'pageCounter'
};
var options = {
sort: { _id: 1 },
limit: 10,
page: 5,
select: {title:1, price:1},
customLabels: myCustomLabels
it('with custom labels', function () {
};
return Book.paginate(query, options).then((result) => {
expect(result.itemsList).to.have.length(10);
expect(result.itemsList[0].title).to.equal('Book #41');
expect(result.itemCount).to.equal(100);
expect(result.perPage).to.equal(10);
expect(result.currentPage).to.equal(5);
expect(result.pageCounter).to.equal(41);
expect(result.hasPrevPage).to.equal(true);
expect(result.hasNextPage).to.equal(true);
expect(result.prev).to.equal(4);
expect(result.next).to.equal(6);
expect(result.pageCount).to.equal(10);
});
});
var query = {
title: {
$in: [/Book/i]
}
};
const myCustomLabels = {
totalDocs: 'itemCount',
docs: 'itemsList',
limit: 'perPage',
page: 'currentPage',
nextPage: 'next',
prevPage: 'prev',
totalPages: 'pageCount',
pagingCounter: 'pageCounter'
};
});
var options = {
sort: {
_id: 1
},
limit: 10,
page: 5,
select: {
title: 1,
price: 1
},
customLabels: myCustomLabels
};
return Book.paginate(query, options).then((result) => {
after(function (done) {
mongoose.connection.db.dropDatabase(done);
});
expect(result.itemsList).to.have.length(10);
expect(result.itemsList[0].title).to.equal('Book #41');
expect(result.itemCount).to.equal(100);
expect(result.perPage).to.equal(10);
expect(result.currentPage).to.equal(5);
expect(result.pageCounter).to.equal(41);
expect(result.hasPrevPage).to.equal(true);
expect(result.hasNextPage).to.equal(true);
expect(result.prev).to.equal(4);
expect(result.next).to.equal(6);
expect(result.pageCount).to.equal(10);
});
});
after(function (done) {
mongoose.disconnect(done);
});
});
after(function (done) {
mongoose.connection.db.dropDatabase(done);
});
after(function (done) {
mongoose.disconnect(done);
});
});
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc