Breeze.js-复杂属性导致em.exportEntities期间出现循环结构异常

Breeze.js-复杂属性导致em.exportEntities期间出现循环结构异常,breeze,Breeze,在运行exportEntities时,breeze通过删除实体的属性并将其放入数组中,来实现对实体的展平。在仅具有简单属性的实体中,这会防止循环引用,因为entityAspect不会跨多个实体进行复制。然而,复杂属性并没有扁平化,仍然具有这个entityAspect,当breeze试图调用JSON.stringify()时,会导致循环结构异常 下面是一些复制此问题的代码: var jsonMetadata = { "metadataVersion": "1.0.3", "data

在运行exportEntities时,breeze通过删除实体的属性并将其放入数组中,来实现对实体的展平。在仅具有简单属性的实体中,这会防止循环引用,因为entityAspect不会跨多个实体进行复制。然而,复杂属性并没有扁平化,仍然具有这个entityAspect,当breeze试图调用JSON.stringify()时,会导致循环结构异常

下面是一些复制此问题的代码:

var jsonMetadata = {
    "metadataVersion": "1.0.3",
    "dataServices": [
        {
            "serviceName": "api/Foo/",
            "hasServerMetadata": false,
            "jsonResultsAdapter": "webApi_default",
            "useJsonp": false
        }
    ],
    "structuralTypes": [
        {
            "shortName": "address",
            "namespace": "YourNamespace",
            "isComplexType": true,
            "dataProperties": [
                {  "name": "street", "dataType": "String" },
                {  "name": "city", "dataType": "String" },
                {  "name": "country", "dataType": "String" }
            ]
        },
        {
            "shortName": "person",
            "namespace": "YourNamespace",
            "dataProperties": [
                {  "name": "id", "dataType": "Int32", isPartOfKey: true },
                {  "name": "name", "dataType": "String" },
                {  "name": "hobbies", "dataType": "String" },
                {  "name": "address", "complexTypeName": "address:#YourNamespace" }
            ] }
    ]
};

var manager = new breeze.EntityManager();
manager.metadataStore.importMetadata(jsonMetadata)

var person = manager.createEntity('person', {id: 1});
person.address.street = "Sample Street";

console.log("Complex property is a circular datatype, cannot convert to JSON - that's fine")
// JSON.stringify(person.address); // fails with error

console.log("... except that manager.exportEntities() doesn't handle that case!");
manager.exportEntities(); // also fails

编辑:woops,糟糕的形式,遗漏了一个问题:这是一个bug吗?

这是一个bug,已经在Breeze 1.3.5版中修复,现在可以通过nuget和Breeze网站获得


而且。。。好的。我们对此表示感谢

你的问题是什么?很好。。thx,我现在正在看它,当我有答案时会重新发布。谢谢你的及时修复和回复-现在就测试它!