2016-07-24 6 views
1

Ich bemerkte, dass, während es einen Fehler im Generator gibt, express.js weiterverarbeitung, ohne es zu stoppen. Daher kann ich den tatsächlichen Fehler nicht finden. Meine Frage ist: Wie express.js zu stoppen und Fehler auszugeben, wenn es einen Fehler im Generator gibt. Meine CodesExpress.js Laden und Laden, wenn Fehler innerhalb Generator

Controller.js

const mongoose = require('mongoose'); 
const {wrap: async} = require('co'); 
const Post = require('../models/Post'); 
//.... there are more modules. 

const getPosts = async(function* (req, res) { 
    const page = (req.query.page > 0 ? req.query.page : 1) - 1; 
    const limit = 5; 
    const options = { 
    limit: limit, 
    page: page 
    }; 

    const posts = yield Post.list(options); 
    const count = yield Post.count(); 
    console.log(posts); 

    res.render('posts/index', { 
    title: 'Home', 
    posts: posts, 
    page: page + 1, 
    pages: Math.ceil(count/limit) 
    }); 
}); 

app.get('/', getPosts); 

Post.js

//.. more codes 

postSchema.static.list = function (options) { 
    const criteria = options.criteria || {}; 
    const page = options.page || 0; 
    const limit = options.limit || 30; 
    return this.find(criteria) 
    .populate('user', 'name userlogin profile email') 
    .sort({ createdAt: -1 }) 
    .limit(limit) 
    .skip(limit * page) 
    .exec(); 
}; 

Antwort

1

Es ist ein Tippfehler in Post.js. postSchema.static.list sollte postSchema.statics.list sein (Statik nicht statisch).

Versuchen Sie, yield ins Innere zu versuchen und zu fangen.

const getPosts = async(function* (req, res, next) { 
    const page = (req.query.page > 0 ? req.query.page : 1) - 1; 
    const limit = 5; 
    const options = { 
    limit: limit, 
    page: page 
    }; 
    try { 
    const posts = yield Post.list(options); 
    const count = yield Post.count(); 
    console.log(posts); 

    res.render('posts/index', { 
     title: 'Home', 
     posts: posts, 
     page: page + 1, 
     pages: Math.ceil(count/limit) 
    }); 
    }catch(err){ 
    next(err); 
    } 
}); 
+0

Ich bin so dumm. Danke vielmals. – user6571640