現在、 MojoliciousとMojo::Pgを使用して、Perl で書かれた Web サイトを持っています。その機能の 1 つは、Ninja Block の温度センサーからデータを取得して表示することです。Postgres には 4 つのテーブルがありoutdoor_temperature
、outdoor_humidity
屋内でも同じです。テーブルは次のようになります。
Column | Type | Modifiers
--------+---------+-----------
time | bigint | not null
value | numeric | not null
date | date | not null
はミリtime
秒単位のエポック値 (1 分あたり 1 レコード)、value
は温度または湿度であり、それdate
はまさにそれです (したがって、特定の日のすべてのレコードは列に同じ値を持ちdate
ます)。
Node と Sails.js を使用してサイトを書き直していますが、これは主に学習の機会のためであり、ここで行う最善の方法に固執しています。その Perl 化身では、Ninja Block 関連の機能 (今日の現在の気温を表示する、特定の日の最高/最低を表示するなど) ごとに 1 つのサブルーチンがあり、それが対象の場所 (屋内または屋外) を渡します。 )そして、すべてが次のようにそこから始まります:
sub current {
my ( $self, $table ) = @_;
return $self->pg->db->query( "select time, value from $table where time = (select max(time) from $table)" )->hash;
}
しかし、Sails/Waterline では、モデルが 1 つのテーブルだけで構成されているようです。私の Perl バージョンではどのテーブル間にも結合はなく、Sails で実行できる個々のテーブルごとにいくつかのやや複雑な SQL クエリがあるだけですが、Sails で.query
複製せずにこの同じセットアップを保持する方法がわかりません屋内と屋外の両方のテーブルをチェックするときのコードの束。
それとも、これについて完全に間違って考えており、すべてを達成するためのはるかに優れた方法がありますか?