Как сканировать или запрашивать таблицу Dynamodb, используя Vogels, передавая JSON-объект условий?

Я пытаюсь реализовать собственный адаптер sails-динамод, похожий на этот, но совместимый с новой версией Sails v1.0.

Я застрял в реализации функции find(), пытаясь использовать переданную карту условий (параметр query.criteria.where), чтобы построить динамический запрос к базе данных Dynamodb с помощью библиотеки Vogels.

Если я пытаюсь построить запрос вручную, он работает:

model.scan().where('email').equals('xyz@abc.com').exec((err, result) => {
  if (err) {
    sails.log.error(err);
  } else {
    sails.log.info(result);
  }
});

Но я пытаюсь добиться чего-то похожего на это:

model.scan({email: 'xyz@abc.com'}).exec((err, result) => {
  if (err) {
    sails.log.error(err);
  } else {
    sails.log.info(result);
  }
});

Версия паруса v1.0.2
Vogels версия v2.2.0

1 ответ

Решение

Вот обходной путь для этой проблемы, где я перебираю запрос, где условия один за другим, и добавляю их к объекту сканера.

var _ = require('@sailshq/lodash');

let scanner = model.scan();

// Build query conditions
_.forOwn(sq3.criteria.where, (value, key) => {
  scanner.where(key).equals(value);
});

scanner.exec((err, result) => {
  if (err) {
    sails.log.error(err);
  } else {
    sails.log.info(result);
  }
});
Другие вопросы по тегам