Использование объекта из GET param в качестве предложения where в sequelize - PullRequest
0 голосов
/ 18 мая 2018

Я хочу сделать запрос 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 голосов
/ 18 мая 2018

Это должно работать -

  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.

0 голосов
/ 18 мая 2018

req.params.object_query является строкой JSON, вы можете использовать JSON.parse функцию

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

, а URL должен быть таким, как localhost/note/{"objectID": 1234, "otherparam": "abcd"}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...