资源不引用相同的相关资源

Resources not referencing the same related resource

我定义了两个资源 - FooBar - 其中 Foo 包含一个。但是,当以这种格式插入一些基本数据时,如果多个 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?

Fiddle 此处使用 Jasmine 测试:http://jsfiddle.net/dimmreaper/c0o1kqd0/

它不起作用,因为看起来您实际上是在尝试建立多对多关系。 "bar belongsTo foo" 意味着任何单独的条形图(至多)恰好属于 one foo,但在这里您试图让条形图 #100 既属于 foo #1 又属于 foo # 2,这不是 belongsTo 关系。

由于每个条实际上没有 localKey 期望的字段 (fooId),JSData 试图为您推断字段,并且由于迭代的工作方式,JSData 推断bar #100 属于 foo #2,所以 foo1.bar 将是 undefined.