использование switch в запросе get в экспресс js возвращает ошибку, почему? - PullRequest
0 голосов
/ 07 декабря 2018

, поэтому я все еще новичок в nodejs, и когда я запускаю http://127.0.0.1:3000/ в браузере, я получаю это сообщение, Cannot GET / Я думаю, это потому, что я использовал оператор switch.я не могу использовать переключатель внутри app.get?Я хочу сделать код СУХИМ, поэтому я использовал переключатель.

 const express = require('express');
        const app = express();
        const port = 3000;
        const hostname = 'localHost';
        app.get('/:main/:sub/:sub2', (req, res) => {
            let main = String(req.params.main).toLowerCase();
            let sub = String(req.params.sub).toLowerCase();
            let sub2 = String(req.params.sub2).toLowerCase();
            switch (main) {
                case "":
                    res.send(`Hi there welcome to my assignment`);
                case "speak":
                    {
                        switch (sub) {
                            case "pig":
                                res.send(`The pig says 'Oink'`);
                            case "cow":
                                res.send(`The cow says 'Moo'`);
                            case "dog":
                                res.send(`The dog says 'Woof Woof!'`);
                            case "*":
                                res.send(`sorry no one speaks here!`);
                        }
                    }
                case "repeat":
                    {
                        if (sub2 === !NaN) {
                            for (let i = 0; i < sub2; i++) {
                                res.send(`${sub}`);
                            }
                        }
                    }
                default:
                    res.send(`Page not found!`);
            }
        });
        app.listen(port, hostname, () => {
            console.log(`server has started`)
        });

1 Ответ

0 голосов
/ 07 декабря 2018

Ваш регистр пустой строки не является допустимым параметром для поиска в пределах main.

Создайте маршрут по умолчанию, используя app.get вместо:

 const express = require('express');
        const app = express();
        const port = 3000;
        const hostname = 'localHost';
        app.get("/", (req, res) => res.send("Welcome to my assignment"));
        app.get('/:main/:sub/:sub2', (req, res) => {
            let main = String(req.params.main).toLowerCase();
            let sub = String(req.params.sub).toLowerCase();
            let sub2 = String(req.params.sub2).toLowerCase();
            switch (main) {
                case "speak":
                    {
                        switch (sub) {
                            case "pig":
                                res.send(`The pig says 'Oink'`);
                                break;
                            case "cow":
                                res.send(`The cow says 'Moo'`);
                            break;
                            case "dog":
                                res.send(`The dog says 'Woof Woof!'`);
                            break;
                            case "*":
                                res.send(`sorry no one speaks here!`);
                            break;
                        }
                    }
                case "repeat":
                    {
                        if (!Number.isNaN(sub2)) {
                            let str = "";
                            for (let i = 0; i < sub2; i++) {
                                str+=sub;

                            }
                            res.send(str);
                        }
                        break;
                    }
                default:
                    res.send(`Page not found!`);
                    break;
            break;
            }
        });
        app.listen(port, hostname, () => {
            console.log(`server has started`)
        });

Редактировать Я также настроил функцию «повтор» для работы.!NaN всегда true.Ваш оригинальный код в основном сказал if(sub2 === true), чего никогда не будет.Я изменил его, используя условный метод !Number.isNaN.Затем я конкатенировал строку и вывел ее n количество раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...