node.js - 如何通过传递条件的 JSON 对象使用 Vogels 扫描或查询 Dynamodb 表?
问题描述
我正在尝试实现一个自定义的sails-dynamodb 适配器,类似于这个但与新的 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
解决方案
这是针对此问题的解决方法,我将逐个迭代查询的 where 条件,并将它们附加到扫描仪对象。
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);
}
});
推荐阅读
- css - 图像上的 Antd Tooltip useMap reactjs
- php - WordPress + Woo - 不保存产品描述
- pycharm - 在调试下运行代码之前的 PyCharm 确认
- python - 在 Flask 的 base.html 中显示用户名
- python - 模糊模式匹配的替代方法
- javascript - 在 pug 模板中挂载组件
- pandas - groupby 组内的排名顺序
- ios - VideoToolBox中是否可以控制RGB到YUV矩阵的转换?
- ruby-on-rails - 根据 Rails 中的日期查询以获取结果?
- angular-validation - Angular 自定义验证错误消息不起作用