javascript - 从 2 个不同的属性获取 MySql 表中的项目

标签 javascript mysql node.js sequelize.js

我已经在 NodeJS w/Sequelize 中使用 MySQL 设置了一种方法,以使用每个项目的 id 从表中获取项目(有效),但我也试图按日期而不是 id 获取相同的项目。下面我有我写的代码片段和我已经尝试过的代码。
Controller
这里 FindOne 函数有效但 FindOneDate 无效,即使它们相同,除了后者将日期替换为 id。

// Find a single Menu Item with an id
exports.findOne = (req, res) => {
  const { id } = req.params;

  Menus.findByPk(id, { include: MenuItems })
    .then((data) => {
      res.send(data);
    })
    .catch((err) => {
      res.status(500).send({
        message: `Error retrieving menu with id: ${id}`,
      });
    });
};

// Find a single Menu Item with an date
exports.findOneDate = (req, res) => {
  const { date } = req.params;
  
  Menus.findByDate(date, { include: MenuItems })
    .then((data) => {
      res.send(data);
    })
    .catch((err) => {
      res.status(500).sned({
        message: `Error retrieving menu with date: ${date}`,
      });
    }); 
};
路线
在这里,我编写路由器获取日期的请求与我为 id 所做的相同。我曾尝试将路线更改为/date/:date 但这也没有太大作用。
// Retrieve a single Menu Item with id
  router.get('/:id', menus.findOne);

// Retrieve a single Menu Item with date
router.get('/:date', menus.findOneDate);
这是我试图通过 postman 在请求中使用日期的照片,但我什么也没得到,这就是我的控制台的样子:
Console Log
我不确定为什么在控制台中它将我给的日期与 ID 进行比较。我正在寻找有关如何解决此问题的任何帮助或指导,如果您有任何想法或疑问,请告诉我。

最佳答案

之所以将您提供的数据与 ID 进行比较是因为 /:id/:date 。对于 express ,它的路线相同。由于您将 ID 路由放在 Date 路由之前,因此当有人发出请求(例如)/asdasd 时,它​​首先命中 /:id,因此它运行 menu.findOne。你需要改成这样

// Retrieve a single Menu Item with id
router.get('/:id', menus.findOne);

// Retrieve a single Menu Item with date
router.get('date/:date', menus.findOneDate);
当您想按日期查找时,您只需向 date/${your-date} 发出请求
顺便说一下,我认为 Sequelize 中没有 Model.findByDate 函数。也许您应该尝试 Model.findAllModel.findOne
Menus.findOne({
    where: {
       date //I don't know how your Menu modal looks like so let's just assume it has "date" column
    },
    include: MenuItems })
    .then((data) => {
      res.send(data);
    })
    .catch((err) => {
      res.status(500).sned({
        message: `Error retrieving menu with date: ${date}`,
      });
    });

关于javascript - 从 2 个不同的属性获取 MySql 表中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64979766/

相关文章:

javascript - 如何为引导模式同时触发两个事件?

php - 在 date_sub 函数中使用间隔时,我们可以使用月和日组合的间隔吗?

javascript - 当用户使用 jquery 单击添加更多 anchor 标记时更改选择时获取 Null 值?

javascript - Node.js - 将上下文传递给函数属性中的嵌套对象

node.js - Socket.IO故障检测

javascript - NodeJS 和导出 "has no method .."

javascript - "with"语句的效率如何?

javascript - 托管的 JS 文件未加载到 android webview 中

php - 我需要帮助将 Mysql 查询对象转换为字符串

javascript - IP地址列表的正则表达式