Функция маршрутизации не вызывается - PullRequest
0 голосов
/ 30 апреля 2020

Я работаю над простым ресторанным веб-приложением, которое использует базу данных mon go -db для хранения пунктов меню. Моя проблема в том, что у меня есть клиентский файл js, который будет использовать функцию маршрутизации, которая затем обращается к базе данных, чтобы вернуть все пункты меню определенного ресторана. Моя проблема в том, что моя конечная точка для URL не распознается:

Клиент. js

function readMenu(rest){
    (async () => {
        // const newURL = url + "/menus/"+rest
        const resp = await fetch(url+"/menus/"+rest)
        const j = await resp.json();


        itemlist = j["items"]
        var element = document.getElementById("menu")
        var i;
        for (i = 0; i < itemlist.length; i++) {
            var para = document.createElement("p")
            item = itemList[i]
            text = item["name"]+" | "+item["cost"]+" | "+item["descr"] +"<br>";
            var node = document.createTextNode(text)
            para.appendChild(node)
            element.appendChild(para)
        }
    })
}

Server-routing.ts (Routings):

this.router.get("/menus", this.getResturants.bind(this))
this.router.post("/menus", this.addResturaunt.bind(this))
this.router.get("/menus/:rest", this.getResturauntItems.bind(this))
this.router.delete("/menus/:rest",this.deleteResturaunt.bind(this))
this.router.get("/menus/:rest/:item",[this.errorHandler.bind(this),this.getItem.bind(this)])
this.router.post("/menus/:rest",this.addItem.bind(this))
this.router.delete("/menus/:rest/:item",this.deleteItem.bind(this))

Server-routing.ts (функция):

public async getResturauntItems(request, response) : Promise<void> {
    console.log("Getting Restaurant Items")
    let rest = request.params.rest
    let obj = await this.theDatabase.getResturauntItems(rest)
    console.log(obj)
    response.status(201).send(JSON.stringify(obj))
    response.end()
}

Итак, что должно произойти, если кнопка вызывает readMenu (), то она делает GET-запрос на выборку localhost: 8080 / api / menus / и затем пункты меню из коллекции должны быть возвращены. Проблема в том, что когда я нажимаю кнопку, ничего не происходит. Я знаю, что он не перенаправляется на какую-то другую функцию, поскольку все они имеют "console.log ()", чтобы отслеживать их, и ни одна из них не была вызвана. Я использовал инструмент «осмотреть», чтобы увидеть, был ли запрос отправлен или получен где-нибудь и ничего. Я не уверен, в чем проблема. Если кто-то может помочь, это будет очень ценно.

1 Ответ

0 голосов
/ 30 апреля 2020

вы просто никогда не вызывали свою функцию, вы объявили функцию asyn c внутри своей функции, но никогда не вызывали ее.

function readMenu(rest){
(async () => {
    // const newURL = url + "/menus/"+rest
    const resp = await fetch(url+"/menus/"+rest)
    const j = await resp.json();


    itemlist = j["items"]
    var element = document.getElementById("menu")
    var i;
    for (i = 0; i < itemlist.length; i++) {
        var para = document.createElement("p")
        item = itemList[i]
        text = item["name"]+" | "+item["cost"]+" | "+item["descr"] +"<br>";
        var node = document.createTextNode(text)
        para.appendChild(node)
        element.appendChild(para)
    }
})();

}

вам нужно добавить () после создания функций для его вызова.

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