8

次のデータ構造があります。

{
    slug: "wall-slug",
    nodes: {
        "node1": "id-from-nodes-table-1",
        "node2": "id-from-nodes-table-2"
    }
}

ノード

{
    id: "id-from-nodes-table-1",
    something: "something"
}

この方法で、ノード テーブルのドキュメントをノード テーブルのノード オブジェクトの特定のノードにマージしようとしています。

r.db("test").table("walls").getAll("wall-slug", {index: "slug"}).map(function(row) {
    return row.merge({nodes: row("nodes").map(function(node) {
        return r.db("test").table("nodes").get(node);
    })});
})

そして、それは次のようになるはずです:

{
    slug: "wall-slug",
    nodes: {
        "node1": {object from nodes table got by value from this property},
        "node2": {object from nodes table got by value from this property}
    }
}

しかし、「OBJECT を SEQUENCE に変換できません」というメッセージが表示されます - ノードのオブジェクト プロパティを反復処理し、そのプロパティ値を別のテーブルのオブジェクトに置き換える方法が見つかりませんでした - 何かありますか?

4

1 に答える 1

10

mapオブジェクトではなく、配列またはストリームで反復します。を使用keys()してキーを取得し、それらを反復できます。

クエリは次のようになります。

r.db("test").table("walls").getAll("wall-slug", {index: "slug"}).map(function(row) {
  return row.merge({nodes: 
    row("nodes").keys().map(function(key) {
      return r.expr([key, r.db("test").table("nodes").get(row("nodes")(key))])
    }).coerceTo("object")
  })
})
于 2014-02-18T20:19:55.960 に答える