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

Я пытаюсь реализовать пользовательский адаптер sails-DynamodB , похожий на этот , но совместимый с новой версией 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 Ответ

0 голосов
/ 06 ноября 2018

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

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);
  }
});
...