使用来自GET param的对象作为sequelize中的where子句

时间:2018-05-18 07:59:17

标签: node.js express parameters get sequelize.js

我想发出GET请求,该请求从Postgres数据库返回数据,而不在高级指定where子句中。

router.get("/:object_query", async (req, res) => {
        var object_query = req.params.object_query;
        var note = await db.note.findAll({
            where: object_query
        });
        if (!note.length) {
            return res.status(404).send();
        }
        res.send({
            note
        });
    });

请求的请求将是这样的:

localhost/note/{objectID: "1234"}

localhost/note/{objectID: "1234", otherparam: "abcd"}

想法是我可以从同一个请求查询表中使用不同的行。

如果没有为我计划用于where子句的每个不同数量的参数写入请求,这样的事情是否可能,因为我有一个想法? 应该如何做,从我的尝试

(node:23832) UnhandledPromiseRejectionWarning: Error: Support for `{where: 'raw query'}` has been removed.

谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

req.params.object_query是JSON字符串,您可以使用JSON.parse函数

var object_query = JSON.parse(req.params.object_query);

和网址必须类似于localhost/note/{"objectID": 1234, "otherparam": "abcd"}

答案 1 :(得分:0)

这应该有效 -

  router.get("/:object_query", async (req, res) => {
       var object_query = req.params.object_query;
       db.note.findAll({
            where: JSON.parse(object_query)
       }).then(notes => {
          if (!notes.length) {
              return res.status(404).send();
          }
          res.send({
              notes
          });
       });
   });

确保param是有效的JSON。