如何通过传递条件的JSON对象使用Vogels扫描或查询Dynamodb表?

时间:2018-11-06 09:44:16

标签: node.js amazon-dynamodb sails.js adapter vogels

我正在尝试实现自定义的sails-dynamodb适配器,与this one类似,但与新的Sails版本v1.0兼容。

在执行find()函数时,我陷入了困境,尝试使用传递的条件图( query.criteria.where 参数)来构建动态使用Vogels库查询Dynamodb数据库。

如果我尝试手动构建查询,它将起作用:

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 :(得分:0)

这里是解决此问题的方法,我在其中逐个遍历查询的条件,并将其附加到扫描器对象。

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