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

时间:2016-02-01 21:29:16

标签: jsdata js-data-angular

我已经定义了两个资源 - 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/

1 个答案:

答案 0 :(得分:1)

它无法正常工作,因为它看起来像是在尝试多对多的关系。 "酒吧属于foo"意味着任何一个单独的栏都属于(最多)一个 foo,但是你在这里试图让#100号栏同时属于foo#1和foo#2,这不是&#39 ; ta属于关系。

由于每个栏实际上都没有localKey期望的字段(fooId),因此JSData正在尝试为您推断该字段,并且由于迭代的工作原理,JSData推断那条#100属于foo#2,所以foo1.bar将是undefined

相关问题