首页 > 解决方案 > Web API 路由对 2 个不同的调用给出相同的响应

问题描述

我使用 Express 和 Node.JS 制作了简单的路由器(Github Repo 代码:https ://github.com/michalwitek1232/back )

我有两条不同的路线,一条用于“食谱”,另一条用于“przepisy”。

我的路由器脚本:

const Recipe = require("../models/recipe.model.js");
const Przepis = require("../models/przepis.model.js");

module.exports = app => {
    const Recipe = require("../controllers/recipe.controller.js");
    const Przepis = require("../controllers/recipe.controller.js");
  
    // Create a new Recipe
    app.post("/recipe", Recipe.create);
  
    // Retrieve all Recipe
    app.get("/recipes", Recipe.findAll);
  
    // Delete a Recipe with recipeId
    app.delete("/recipe/:recipeId", Recipe.delete);
  
    // Create a new Recipe
    app.delete("/recipe", Recipe.deleteAll);

    // * przepisy ale po polsku bo angielski leży ;P

    //dodawanie przepisu
    app.post("/przepis", Przepis.create);

    //pobieranie przepisów
    app.get("/przepisy", Przepis.findAll);

    //pobieranie po id
    /*
    TODO: dodać
    app.get("/przepis/przepisId", Przepis.findOne);
    */

    //edycja po id
    /*
    TODO: dodać
    app.put("/przepis/:przepisId", Przepis.update);*/

    //Usuwanie przepisu po Id
    app.delete("/przepis/:przepisId", Przepis.delete);

    //usuwanie wszystkich
    app.delete("/przepis", Przepis.deleteAll);

  };

但是当我在 Postman 中调用时localhost:3000/przepisy,它返回的响应与localhost:3000/recipes奇怪的相同,因为有 2 个单独的查询:

食谱:

SELECT * FROM recipies

普热赛:

SELECT * FROM przepisy

标签: javascriptnode.jswebapirest

解决方案


您为两个表定义了相同的控制器。

const Recipe = require("../controllers/recipe.controller.js");
const Przepis = require("../controllers/recipe.controller.js");

当您调用 findAll 时,它会从 '../controllers/recipe.controller.js' 控制器调用第一个定义的函数,并且它正在使用 Recipe 模型。这就是为什么你得到了同样的回应。

作为解决方案,为模型创建单独的控制器。


推荐阅读