如何使用LokiJS查询多个表(加入)?

问题描述 投票:2回答:2

由于我无法在node-webkit应用程序中使用SQLite,我正在研究LokiJS,但我似乎无法找到一种简单的方法来在两个数据集之间建立连接或某种关系。

一个数据集是艺术家,另一个是媒体。由于它可能拥有5000名艺术家和100万媒体,我认为最好通过使艺术家成为媒体的子文档来避免重复。此外,如果我修改1000个媒体条目的艺术家,则需要大量编写而不是仅更新艺术家数据集中的单个条目。

我找到的唯一连接创建了返回的json,如下所示:

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

我更喜欢的是更传统的东西:

{
  artist_id:
  artist_name:
  media_id:
  media_title:
}

我查看了NeDB,它提供了更容易的连接,但现在已经超过2年没有更新了。我无法让SQLite3为nodewebkit 0.28.0编译,也没有得到SO的答案。无论如何,LokiJS看起来更有趣,因为它在内存和磁盘上。

那么如何加入艺术家和媒体呢?

谢谢!

join node-webkit lokijs
2个回答
0
投票
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
 })

它装载了两个最终的数据操作。


0
投票

我不认为leftright对象应该是一个问题。我正在使用的代码是

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();
© www.soinside.com 2019 - 2024. All rights reserved.