鍍金池/ 問答/HTML/ 如何將ctx.state傳遞給另一個路由中的模板?

如何將ctx.state傳遞給另一個路由中的模板?

admin.get('/usermsg', async(ctx) => {    
    var count = await new Promise(function(resolve, reject){
        User.count(function(err, count){
            if(count){
                resolve(count);
            }

            if(err){
                reject(err);
            }
        });
    })

    ctx.state.userMsg = {
        page: Number(ctx.query.page),        //翻到的頁數(shù)
        limit: 4,                            //每頁顯示的用戶數(shù)
        pages: 0,                            //總頁數(shù)
        count: count                         //用戶信息數(shù)量
    }

    var userMsg = ctx.state.userMsg;

    ctx.state.users = await new Promise(function(resolve, reject){
        userMsg.pages = Math.ceil(userMsg.count / userMsg.limit);
        userMsg.page = userMsg.page > userMsg.pages ? userMsg.pages : userMsg.page;         //page不能大于pages,不能小于1
        userMsg.page = userMsg.page < 1 ? 1 : userMsg.page;

        var skip = (userMsg.page - 1) * userMsg.limit;                  //每頁從第幾個用戶信息開始讀取

        User.find().limit(userMsg.limit).skip(skip).exec(function(err, doc){
            if(doc){
                resolve(doc);
            }

            if(err){
                reject(err);
            }
        })
    })

    await ctx.render('admin/usermsg');
})

在上面這個路由中可以將ctx.state.userMsg傳遞給模板,在下面這個路由中也需要這個數(shù)據(jù),請問應(yīng)該怎么傳遞給他?

admin.get('/category', async(ctx) => {
    await ctx.render('admin/category');
})
回答
編輯回答
憶當(dāng)年

await next()和鏈?zhǔn)讲僮?/p>

比如:

// controllers/test.js
async function get (ctx, next) {
    const res = await models.test.get()
    
    ctx.state.code = 0
    ctx.state.data = res.data
    
    await next()
}
module.exports = get
import controllers from '../controllers/test'

admin.get('/category', controllers.test, async(ctx) => {
    await ctx.render('admin/category', {
        list: ctx.state.data
    });
})
2017年10月29日 23:01