Как запросить несколько таблиц (объединить) с LokiJS?

Поскольку я не могу использовать SQLite в приложении node-webkit, я смотрю на LokiJS, но не могу найти простой способ создания объединений или каких-либо отношений между двумя наборами данных.

Один набор данных - художники, а другой - медиа. Поскольку он может содержать 5000 художников и миллион медиа, я думаю, что было бы лучше избежать повторения, сделав художника субдокументом медиа. Кроме того, если я изменю художника на 1000 медиа-записей, это потребует много написания вместо того, чтобы просто обновлять одну запись в наборе данных Artist.

Единственное объединение, которое я нашел, создало возвращенный json следующим образом

Object {
  left: {
    // artists
  },
  right: {
    // media
  }
}

Я бы предпочел что-то более традиционное:

{
  artist_id:
  artist_name:
  media_id:
  media_title:
}

Я посмотрел на NeDB, который предлагает присоединения легче, но не обновлялся уже более 2 лет. и я не могу заставить SQLite3 скомпилировать для nodewebkit 0.28.0 и не получил ответов от SO. В любом случае, с LokiJS играть куда интереснее, так как он находится в памяти и на диске.

Так, как я могу присоединиться к художникам и СМИ?

Спасибо!

1 ответ

joinResult.map(data => {
let a = {}
a.artist_id = data.left.artist_id
a.artist_name = data.left.artist_name
a.media_id = data.right.media_id
a.media_title = data.right.media_title
return a
 })

Используйте lodash для окончательной обработки данных.

Я не думаю left, right объект должен быть проблемой здесь. Код, который я использую

const q = db.card.eqJoin(db.deck, "deckId", "$loki", (l, r) => {
    const {front, back, note, srsLevel, nextReview, tags} = l;
    return {
        front, back, note, srsLevel, nextReview, tags,
        deck: r.name
    };
}).find(query);
const count = q.copy().count();
const data = q.offset(offset).limit(limit).data();
Другие вопросы по тегам