【问题标题】:How get all data if field in query string is empty Node and Sequelize with Postgres如果查询字符串中的字段为空节点并使用 Postgres 续集,如何获取所有数据
【发布时间】:2018-10-20 01:12:36
【问题描述】:

我正在用 Node 学习 Sequelize,我有一个问题..

我有以下带参数的 URL:

http://localhost:9000/api/get/Joao/""

第一个参数是name,第二个参数是manager,分别是Joao""(我认为是空的)..

我想要的是: 如果第二个参数是empty 我想获取所有具有name Joao 的数据..

已经将undefined, null放入Sequelize的代码中但不起作用..

有人可以帮帮我吗?

我的Sequelize代码:

getCubikMembers(req, res) {
  return Cubik
    .findAll({
      where: {
        name: req.params.name,
        manager: null // what i put here to happen what i want?
      }
    })
    .then(success => res.status(201).send(success))
    .catch(err => res.status(err).send(err))
}

我的 API:

app.get('/api/get/:name/:manager',CubikersController.getCubikMembers);

【问题讨论】:

    标签: javascript node.js sequelize.js


    【解决方案1】:

    你可以使用or语句。我认为可能的解决方案如下所示。我没有测试过代码。

    getCubikMembers(req, res) {
      const manager = req.params.manager;
      return Cubik
        .findAll({
          where: {
            [Op.or]: [
              {manager: manager ? manager : null },
              {name: req.params.name }
            ]
          }
        })
        .then(success => res.status(201).send(success))
        .catch(err => res.status(err).send(err))
    }

    这里是 sequelizejs 中操作符的文档。

    http://docs.sequelizejs.com/manual/tutorial/models-usage.html#complex-filtering-or-not-queries

    【讨论】:

    • 你好,谢谢你的回答,但没有用,它给了我所有,同样我把值放在manager
    • Opps 我做了一个类型,更新了 sn-p,你能像这样更改以下几行,然后再试一次。 [Op.or]: [ { name: req.params.name }, {manager: req.params.manager}, ]
    • 你好,继续同样的事情:(
    • 它实际上写了一些查询,如SELECT * FROM something WHERE manager = null OR name = "something" 它应该在逻辑上工作
    • 啊,我明白了,如果经理不存在,您想检查名称,它会返回所有内容,因为它每次都在检查名称,并根据该名称返回所有内容。你能改变 or 语句的顺序吗?我将再次更新sn-p。对此我很抱歉
    【解决方案2】:

    我必须这样做,但我必须将 "" 更改为 undefined,我不知道,但 Sequelize 中的空值不同..

    我的代码是:

    where: {
      name: req.params.name === 'undefined' ? {
        [Op.ne]: 'undefined'
      } : req.params.name,
      manager: req.params.manager === 'undefined' ? {
        [Op.ne]: 'undefined'
      } : req.params.manager
    },

    如果某个字段是undefined,则像这样在过滤器中被忽略..

    我希望对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 2011-03-12
      • 1970-01-01
      • 2021-11-05
      • 2014-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-28
      • 1970-01-01
      相关资源
      最近更新 更多