如何通过传递 JSON 条件对象使用 Vogels 扫描或查询 Dynamodb table?
How to scan or query a Dynamodb table using Vogels by passing a JSON object of conditions?
我正在尝试实现一个 自定义 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);
}
});
Sails 版本 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);
}
});
我正在尝试实现一个 自定义 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);
}
});
Sails 版本 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);
}
});