node.js - Lorsque router.get("conten1") est utilisé deux fois, une erreur est signalée. s'il vous plaît, aidez
给我你的怀抱
给我你的怀抱 2017-05-24 11:38:38
0
1
697

Description de l'image

Result1 signale directement une erreur, aidez-nous s'il vous plaît

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

répondre à tous(1)
我想大声告诉你

Pourquoi

1. Lorsque la première route get est analysée avec succès, le serveur restituera directement content1 sans attendre la seconde. C'est pourquoi il y a un next dans le paramètre.

2. En express, l'ordre des routes est côte à côte. Si vous n'utilisez pas next, alors seule la méthode de rappel du premier get() sera déclenchée par défaut.

Solution

Synchronisez la requête et enfin effectuez le rendu ensemble

Je suis aussi novice, j'ai écrit du code pour vous expliquer le problème de logique


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);

});

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal