我已经定义了两个资源 - Foo 和 Bar - 其中 Foo 包含一个 Bar 。但是,当以这种格式插入一些基本数据时,如果多个 Foo 引用相同的 Bar ,那么只有最近加载的 Foo 给出了它的参考。以前的 Foo 没有 Bar (未定义。)
资源定义如下:
DS.defineResource({
name: 'Foo',
relations: {
hasOne: {
Bar: {
foreignKey: 'fooId',
localField: 'bar'
}
}
}
});
DS.defineResource({
name: 'Bar',
relations: {
belongsTo: {
Foo: {
localField: "foo",
localKey: "fooId"
}
}
}
});
我正在注入以下测试数据:
var foosJson = [
{
id: 1,
bar: {
id: 100
}
}, {
id: 2,
bar: {
id: 100
}
}, {
id: 3,
bar: {
id: 200
}
}
];
为什么第一个Foo没有引用与第二个Foo相同的Bar?
在这里摆弄茉莉花测试:http://jsfiddle.net/dimmreaper/c0o1kqd0/
答案 0 :(得分:1)
它无法正常工作,因为它看起来像是在尝试多对多的关系。 "酒吧属于foo"意味着任何一个单独的栏都属于(最多)一个 foo,但是你在这里试图让#100号栏同时属于foo#1和foo#2,这不是&#39 ; ta属于关系。
由于每个栏实际上都没有localKey
期望的字段(fooId
),因此JSData正在尝试为您推断该字段,并且由于迭代的工作原理,JSData推断那条#100属于foo#2,所以foo1.bar
将是undefined
。