Falcor - 'get' 不再将引用作为叶值发出

Falcor - 'get' no longer emits references as leaf values

我最近从 Falcor 0.x 升级到 1.1.0(2.x 将是下一步)

根据 Falcor migration documentation,当调用 model.get 时,引用不再作为 json 发出。

但是我想知道在 model.get.

中管理引用的最佳实践是什么

这是一个例子。

具有以下json图表:

{
    jsonGraph: {
        comment: {
            123: {
                owner: { $type: "ref", value: ["user", "abc"] },
                message: "Foo"
            }
        },
        user: {
            abc: {
                name: "John Doe"
                initials: "JD"
            }
        }
    }
}

调用 model.get 将导致:

const json = await model.get(["comment", "123", ["owner", "message"]);

{
    owner: undefined, // 0.x was returning `["user", "abc"]`
    message: "John Doe"
}

但是可以只获取所有者:

const json = await model.get(["comment", "123", "owner", ["name", "initials"]);

{
    name: "John Doe",
    initials: "JD"
}

model.get 中处理引用的建议是什么?

我应该手动获取所有者(如上一个示例?)还是应该使用 ownerId 而不是 comment 模型中的 owner 引用?

model.get 可以取任意数量的 pathSets (docs)。因此,将您的第一个 pathSet 分成两个并作为单独的参数传递:

await model.get(
  ["comment", "123", "message"],
  ["comment", "123", "owner", ["name", "initials"]]
);

哪个应该return

{
  message: "John Doe"
  owner: {
    name: "John Doe",
    initials: "JD"
  }
}

潜在的约束是单个路径集只能包含相同深度的多个路径。所以不同深度的多条路径只能用多个pathSet来表示。