Ich versuche, die folgenden scans
zu einem einzigen (oder query
) zu optimieren. Der einzige Weg, den ich sehe, ist zu verwenden use a OR
comparator using DynamoDB. Ich benutze dynogels
(Gabel von vogels
) in meiner Anwendung, aber leider ist mir keine OR
Abfrage-Funktionalität in dort bekannt.Dynogels: Abfrage mit ODER-Vergleich
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);
Vorgeschlagen Optimierung:
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()));
Die Scans erhalten mir die Vorbehalte, die Ende (departure
) oder Start (arrival
) (oder beides) in ein bestimmter Datumsbereich (from
, to
).
Danke! Werde es ausprobieren. War sich der 'filterExpression'-Syntax nicht bewusst und verwendete nur die nette' Dynogels'-Syntax. – btype