node.js - router.get("conten1")兩次時,報錯。求幫助
给我你的怀抱
给我你的怀抱 2017-05-24 11:38:38
0
1
699

圖片描述

#result1的時候直接報錯,求幫忙

给我你的怀抱
给我你的怀抱

全部回覆(1)
我想大声告诉你

為什麼

1.當在第一個get路由解析成功後,服務端會直接render content1渲染出去,不會等到第二個的到來,這也就是為什麼參數當中有一個next的原因。

2.express中,路由的順序是挨著挨著走的,如果你不使用next,那麼預設只會觸發第一個get()中的回呼方法。

解決辦法

同步查詢,最後一起render

我也是新手,給你寫了一些程式碼,能說明邏輯問題


let data = {};
router.get('/', function (req, res, next) {
    data = {};
    //模拟DB查询回调
    setTimeout(function () {
        data.user = {id: 1, username: 'zhaojunlike'};
        //传递到下面
        next();
    }, 1000);

});
router.get('/', function (req, res, next) {
    console.log(data);
    //模拟第二次查询并且输出Render
    setTimeout(function () {
        data.content = {email: 'zhaojunlike@gmail.com'};
        res.render('index', {title: 'Express', data: data});
    }, 1000);

});

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板