gpt4 book ai didi

javascript - Dynogels:使用 OR 比较查询

转载 作者:行者123 更新时间:2023-11-30 11:38:22 25 4
gpt4 key购买 nike

我正在尝试将以下扫描优化为单个扫描(或查询)。我看到的唯一方法是使用 use a OR comparator using DynamoDB .我在我的应用程序中使用 dynogels(vogels 的分支),但遗憾的是我不知道其中有任何 OR 查询功能。

let arrivals = yield Reservation.scan()
.where('room').equals(room)
.where('arrival').between(from, to)
.execAsync().then((reply) => reply.Items.map((item) => item.get()));

let departures = yield Reservation.scan()
.where('room').equals(room)
.where('departure').between(from, to)
.execAsync().then((reply) => reply.Items.map((item) => item.get()));

let combined = arrivals.concat(departures);
return Promise.resolve(combined);

建议的优化:

return Reservation.scan()
.where('room').equals(room)
.where('arrival').between(from, to)
.or.where('departure').between(from, to)
.execAsync().then((reply) => reply.Items.map((item) => item.get()));

扫描得到在指定日期范围()结束(出发)或开始(到达)(或两者)的预订>, ).

最佳答案

我认为这可以使用 filterexpression 来实现。

使用过滤器表达式的示例代码:-

const scanItem = Reservation.scan().filterExpression('room = :idVal AND ((arrival BETWEEN :arrDateVal1 AND :arrDateVal2) OR (departure BETWEEN :depDateVal1 AND :depDateVal2)) ')
.expressionAttributeValues({ ':idVal' : '2', ':arrDateVal1' : '21-APR-2017', ':arrDateVal2' : '23-APR-2017'
,':depDateVal1' : '21-APR-2017', ':depDateVal2' : '23-APR-2017'});

scanItem.exec((err, result) => {if(!err) {console.log(JSON.stringify(result,undefined, 2))}});

注意:-

不确定您是否想专门使用 where 而不是 filterexpression (或者)只是想实现结果而不考虑 wherefilterexpression.

关于javascript - Dynogels:使用 OR 比较查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43570660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com