繁体   English   中英

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

[英]Getting items in MySql table from 2 different attributes

我已经在 NodeJS w/Sequelize 中使用 MySQL 设置了一种方法,以使用每个项目的 id 从表中获取项目(有效),但我也试图按日期而不是 id 获取相同的项目。 下面我有我写的代码片段和我已经尝试过的代码。

控制器

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

这是我试图通过邮递员在请求中使用日期的照片,但我什么也没得到,这就是我的控制台的样子: 控制台日志

我不确定为什么在控制台中它将我给的日期与 ID 进行比较。 我正在寻找有关如何解决此问题的任何帮助或指导,如果您有任何想法或疑问,请告诉我。

之所以将您提供的数据与 ID 进行比较是因为/:id/:date 对于快递,它的路线相同。 由于您将 ID 路由放在日期路由之前,因此当有人发出请求(例如) /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}`,
      });
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM