2

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

一个数据集是艺术家,另一个是媒体。由于它可能容纳 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 看起来更有趣,因为它在内存和磁盘上。

那么我怎样才能加入艺术家和媒体呢?

谢谢!

4

2 回答 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
 })

使用 lodash 进行最终的数据操作。

于 2018-10-17T16:37:45.697 回答
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();
于 2019-03-09T05:42:41.107 回答