В настоящее время у меня есть сайт, написанный на Perl, используя Mojolicious и Mojo::Pg. Одна из вещей, которые он делает, - это втягивать и отображать данные с датчиков температуры Ninja Block. У меня есть четыре стола в Postgres, outdoor_temperature
, outdoor_humidity
, и снова для дома. Таблицы выглядеть следующим образом:Несколько таблиц для одной модели в Sails.js?
Column | Type | Modifiers
--------+---------+-----------
time | bigint | not null
value | numeric | not null
date | date | not null
Где time
это значение века в миллисекундах (одна запись в минуту), value
температура или влажность, и date
только что (так каждая запись в определенный день имеет то же значение в столбце date
).
Я переписываю сайт, используя Node и Sails.js, в основном только для возможности обучения, и я как бы застрял в лучшем способе делать что-то здесь. В своей инкарнации Perl у меня есть одна подпрограмма для каждой функции, связанной с блокировкой ниндзя (отображающая текущие температуры на сегодняшний день, отображение самого высокого/самого низкого значения за данный день и т. Д.), И я прохожу в том месте, где оно предназначено (внутри или снаружи), и все идет оттуда, как это:
sub current {
my ($self, $table) = @_;
return $self->pg->db->query("select time, value from $table where time = (select max(time) from $table)")->hash;
}
Но с парусами/ватерлинии, это, кажется, что модель состоит только из одной таблицы. Нет никаких связей между любыми таблицами в моей версии Perl, просто некоторые полукоммерные SQL-запросы в каждой отдельной таблице, которые я могу выполнить в Sails, с .query
, но я не уверен, как сохранить эту же настройку под парусами, не требуя дублируйте кучу кода при проверке как внутренних, так и наружных таблиц.
Или я думаю об этом совершенно неправильно, и есть намного лучший способ выполнить все это?