Как использовать фильтры Dynami c, где на Sequelize? - PullRequest
0 голосов
/ 09 января 2020

В моем маршруте я пытаюсь получить регистры с динамическими c столбцами, чем клиент запрашивает маршрут как " router.get ('/ get-by /'" , чем указано поле моего стола ...

Я использую вот так

var field = req.body.field
    Territory
      .findOne({
        where: {
          field : req.params.id
        }
      })

но ничего не работает. Кто-нибудь может мне помочь?

Ответы [ 2 ]

0 голосов
/ 16 января 2020

Я занят этим:

    router.get('/get-by/',
passport.authenticate('jwt',{ session: false}),
[
  query('field').not().isEmpty().withMessage('territory field is empty'),
  query('value').not().isEmpty().withMessage('territory value is empty'),
],
function(req, res) {
  var token = getToken(req.headers);
  if (token) {
    const errors = validationResult(req);
    if (!errors.isEmpty()) {
      return res.status(422).json({ errors: errors.array() });
    }
    let filters = {}
    filters[req.query.field] = req.query.value;

    Territory.
      findAll({
        where: filters
      })
      .then((territory) => {
        if (!territory) {
          return res.status(401).send({
            message: 'Territory not found.',
          });
        }
        res.json({ success: true, territory: territory });
      })
      .catch((error) => res.status(400).send(error));
  } else {
    return res.status(403).send({success: false, msg: 'Unauthorized.'});
  }
});
0 голосов
/ 10 января 2020

Попробуй это. [поле]

var field = req.body.field
Territory
  .findOne({
    where: {
      [field] : req.params.id
    }
  })

Я использую вот так:

var column = dynamicTable[0]
var value = dynamicTable[1]  
HasReports.create({
    ReportId: req.body.id,
    [column]: value, // Changable for report type..
    ReportedById: req.user.id,
    reportHasTitle: req.body.reportHasTitle,
    reportDescription: req.body.description,
    reportedByIp: ip
})
...