Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

implement "promises bluebird" #25

Closed
01speed1 opened this issue Aug 25, 2016 · 2 comments
Closed

implement "promises bluebird" #25

01speed1 opened this issue Aug 25, 2016 · 2 comments

Comments

@01speed1
Copy link

Hello, in the example it shows how to implement the code with callbacks but now that mongoose does not allow queries that way, I use the query so promise as says the documentation of "mongoose-promise" to work properly but I the following error:

I want to know how to write properly used promises
Error: express-paginate:pageCountis not a number >= 0 at C:\Users\Oscar\Desktop\OCT\node_modules\express-paginate\index.js:65:13 at C:\Users\Oscar\Desktop\OCT\App\Routes\admin-profesores.js:29:46 at tryCatcher (C:\Users\Oscar\Desktop\OCT\node_modules\mongoose-paginate\node_modules\bluebird\js\release\util.js:11:23) at Promise._settlePromiseFromHandler (C:\Users\Oscar\Desktop\OCT\node_modules\mongoose-paginate\node_modules\bluebird\js\release\promise.js:488:31) at Promise._settlePromise (C:\Users\Oscar\Desktop\OCT\node_modules\mongoose-paginate\node_modules\bluebird\js\release\promise.js:545:18) at Promise._settlePromise0 (C:\Users\Oscar\Desktop\OCT\node_modules\mongoose-paginate\node_modules\bluebird\js\release\promise.js:590:10) at Promise._settlePromises (C:\Users\Oscar\Desktop\OCT\node_modules\mongoose-paginate\node_modules\bluebird\js\release\promise.js:673:18) at Promise._fulfill (C:\Users\Oscar\Desktop\OCT\node_modules\mongoose-paginate\node_modules\bluebird\js\release\promise.js:614:18) at Promise._resolveCallback (C:\Users\Oscar\Desktop\OCT\node_modules\mongoose-paginate\node_modules\bluebird\js\release\promise.js:415:57) at Promise._settlePromiseFromHandler (C:\Users\Oscar\Desktop\OCT\node_modules\mongoose-paginate\node_modules\bluebird\js\release\promise.js:501:17) at Promise._settlePromise (C:\Users\Oscar\Desktop\OCT\node_modules\mongoose-paginate\node_modules\bluebird\js\release\promise.js:545:18) at Promise._settlePromise0 (C:\Users\Oscar\Desktop\OCT\node_modules\mongoose-paginate\node_modules\bluebird\js\release\promise.js:590:10) at Promise._settlePromises (C:\Users\Oscar\Desktop\OCT\node_modules\mongoose-paginate\node_modules\bluebird\js\release\promise.js:673:18) at Promise._fulfill (C:\Users\Oscar\Desktop\OCT\node_modules\mongoose-paginate\node_modules\bluebird\js\release\promise.js:614:18) at PropertiesPromiseArray.PromiseArray._resolve (C:\Users\Oscar\Desktop\OCT\node_modules\mongoose-paginate\node_modules\bluebird\js\release\promise_array.js:125:19) at PropertiesPromiseArray._promiseFulfilled (C:\Users\Oscar\Desktop\OCT\node_modules\mongoose-paginate\node_modules\bluebird\js\release\props.js:78:14) at Promise._settlePromise (C:\Users\Oscar\Desktop\OCT\node_modules\mongoose-paginate\node_modules\bluebird\js\release\promise.js:550:26) at Promise._settlePromise0 (C:\Users\Oscar\Desktop\OCT\node_modules\mongoose-paginate\node_modules\bluebird\js\release\promise.js:590:10) at Promise._settlePromises (C:\Users\Oscar\Desktop\OCT\node_modules\mongoose-paginate\node_modules\bluebird\js\release\promise.js:673:18) at Async._drainQueue (C:\Users\Oscar\Desktop\OCT\node_modules\mongoose-paginate\node_modules\bluebird\js\release\async.js:125:16) at Async._drainQueues (C:\Users\Oscar\Desktop\OCT\node_modules\mongoose-paginate\node_modules\bluebird\js\release\async.js:135:10) at Immediate.Async.drainQueues [as _onImmediate] (C:\Users\Oscar\Desktop\OCT\node_modules\mongoose-paginate\node_modules\bluebird\js\release\async.js:16:14) at processImmediate [as _immediateCallback] (timers.js:383:17)

Here my code that returns the error

`router.route("/")
.get(function (sol, res, next) {
locals={
tipoDeUsuairo: "Profesor",
title: "Profesores",
page_title: "Panel de Profesores"};

        //codigo con paginacion
        Profesor.paginate({tipo:"PROFESOR"}, {page: sol.query.page, limit: sol.query.limit})
            .then(function (profes, pageCount, itemCount) {
            locals.profes = profes.docs;
            locals.pageCount =  pageCount;
            locals.itemCount = itemCount;
            locals.page = paginate.getArrayPages(sol)(3, pageCount, sol.query.page);
            res.render("Admin/Profesores/index", locals);
        }).catch(function (err) {
            //res.json(err);
            if (err) return next(err);
        })

    })`
@rajivnarayana
Copy link
Contributor

I am not sure if you are suggesting that this is a bug. Please report on stackoverflow if you need help with how mongoose-paginate works.

Anyway, from mongoose-paginate documentation, following seems to be the correct way to use getArrayPages

Profesor.paginate({tipo:"PROFESOR"}, {page: sol.query.page, limit: sol.query.limit})
  .then(function (result) {
    locals.profes = result.docs;
    locals.pageCount =  result.pages;
    locals.itemCount = result.total;
    locals.page = paginate.getArrayPages(sol)(3, result.pages, sol.query.page);
    res.render("Admin/Profesores/index", locals);
  });

@niftylettuce
Copy link
Contributor

PR welcome if it is a bug

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants