Как сканировать или запрашивать таблицу 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);
}
});