Netflix / falcor

A JavaScript library for efficient data fetching
http://netflix.github.io/falcor
Apache License 2.0
10.48k stars 446 forks source link

Batching doesn't satisfy all requests #819

Closed KordonDev closed 5 years ago

KordonDev commented 7 years ago

I have implemented an falcor-angular application to display GitHub User. Code is here. When I activate batching on the model in client/webapp/service/falcor.service.ts the responses in client/webapp/followingList.component.ts and client/webapp/followerList.component.ts are undefined.

When I watch the network request send by falcor, all paths are included: [["user","KordonDev",["imageUrl","login","name","stars"]],["user","KordonDev",["follower","following"],{"from":0,"to":10},["login","name","stars"]],["user","KordonDev","repositories",{"from":0,"to":10},["name","stars"]]]

And also in the response the values are included:

{
  "jsonGraph":{
    "user":{
      "KordonDev":{
        "$type":"ref",
        "value":[
          "userByLogin",
          "KordonDev"
        ],
        "follower":{
          "0":{
            "$type":"ref",
            "value":[
              "userByLogin",
              "pongo710"
            ]
          },
          "1":{
            "$type":"ref",
            "value":[
              "userByLogin",
              "Yannic92"
            ]
          },
          "2":{
            "$type":"ref",
            "value":[
              "userByLogin",
              "EduardAnna"
            ]
          },
          "3":{
            "$type":"ref",
            "value":[
              "userByLogin",
              "n1try"
            ]
          }
        },
        "following":{
          "0":{
            "$type":"ref",
            "value":[
              "userByLogin",
              "timroes"
            ]
          },
          "1":{
            "$type":"ref",
            "value":[
              "userByLogin",
              "flash1293"
            ]
          },
          "2":{
            "$type":"ref",
            "value":[
              "userByLogin",
              "pongo710"
            ]
          },
          "3":{
            "$type":"ref",
            "value":[
              "userByLogin",
              "Safi1012"
            ]
          },
          "4":{
            "$type":"ref",
            "value":[
              "userByLogin",
              "crymis"
            ]
          },
          "5":{
            "$type":"ref",
            "value":[
              "userByLogin",
              "Yannic92"
            ]
          },
          "6":{
            "$type":"ref",
            "value":[
              "userByLogin",
              "n1try"
            ]
          }
        }
      }
    },
    "userByLogin":{
      "KordonDev":{
        "login":"KordonDev",
        "imageUrl":"https://avatars.githubusercontent.com/u/5114919?v=3",
        "name":"Arne Maier",
        "repositories":{
          "0":{
            "$type":"ref",
            "value":[
              "repositoryByIndex",
              "KordonDev",
              0
            ]
          },
          "1":{
            "$type":"ref",
            "value":[
              "repositoryByIndex",
              "KordonDev",
              1
            ]
          },
          "2":{
            "$type":"ref",
            "value":[
              "repositoryByIndex",
              "KordonDev",
              2
            ]
          },
          "3":{
            "$type":"ref",
            "value":[
              "repositoryByIndex",
              "KordonDev",
              3
            ]
          },
          "4":{
            "$type":"ref",
            "value":[
              "repositoryByIndex",
              "KordonDev",
              4
            ]
          },
          "5":{
            "$type":"ref",
            "value":[
              "repositoryByIndex",
              "KordonDev",
              5
            ]
          },
          "6":{
            "$type":"ref",
            "value":[
              "repositoryByIndex",
              "KordonDev",
              6
            ]
          },
          "7":{
            "$type":"ref",
            "value":[
              "repositoryByIndex",
              "KordonDev",
              7
            ]
          },
          "8":{
            "$type":"ref",
            "value":[
              "repositoryByIndex",
              "KordonDev",
              8
            ]
          },
          "9":{
            "$type":"ref",
            "value":[
              "repositoryByIndex",
              "KordonDev",
              9
            ]
          },
          "10":{
            "$type":"ref",
            "value":[
              "repositoryByIndex",
              "KordonDev",
              10
            ]
          }
        },
        "stars":0,
        "follower":{
          "0":{
            "login":{
              "$type":"atom"
            },
            "name":{
              "$type":"atom"
            },
            "stars":{
              "$type":"atom"
            }
          },
          "1":{
            "login":{
              "$type":"atom"
            },
            "name":{
              "$type":"atom"
            },
            "stars":{
              "$type":"atom"
            }
          },
          "2":{
            "login":{
              "$type":"atom"
            },
            "name":{
              "$type":"atom"
            },
            "stars":{
              "$type":"atom"
            }
          },
          "3":{
            "login":{
              "$type":"atom"
            },
            "name":{
              "$type":"atom"
            },
            "stars":{
              "$type":"atom"
            }
          },
          "4":{
            "login":{
              "$type":"atom"
            },
            "name":{
              "$type":"atom"
            },
            "stars":{
              "$type":"atom"
            }
          },
          "5":{
            "login":{
              "$type":"atom"
            },
            "name":{
              "$type":"atom"
            },
            "stars":{
              "$type":"atom"
            }
          },
          "6":{
            "login":{
              "$type":"atom"
            },
            "name":{
              "$type":"atom"
            },
            "stars":{
              "$type":"atom"
            }
          },
          "7":{
            "login":{
              "$type":"atom"
            },
            "name":{
              "$type":"atom"
            },
            "stars":{
              "$type":"atom"
            }
          },
          "8":{
            "login":{
              "$type":"atom"
            },
            "name":{
              "$type":"atom"
            },
            "stars":{
              "$type":"atom"
            }
          },
          "9":{
            "login":{
              "$type":"atom"
            },
            "name":{
              "$type":"atom"
            },
            "stars":{
              "$type":"atom"
            }
          },
          "10":{
            "login":{
              "$type":"atom"
            },
            "name":{
              "$type":"atom"
            },
            "stars":{
              "$type":"atom"
            }
          }
        },
        "following":{
          "0":{
            "login":{
              "$type":"atom"
            },
            "name":{
              "$type":"atom"
            },
            "stars":{
              "$type":"atom"
            }
          },
          "1":{
            "login":{
              "$type":"atom"
            },
            "name":{
              "$type":"atom"
            },
            "stars":{
              "$type":"atom"
            }
          },
          "2":{
            "login":{
              "$type":"atom"
            },
            "name":{
              "$type":"atom"
            },
            "stars":{
              "$type":"atom"
            }
          },
          "3":{
            "login":{
              "$type":"atom"
            },
            "name":{
              "$type":"atom"
            },
            "stars":{
              "$type":"atom"
            }
          },
          "4":{
            "login":{
              "$type":"atom"
            },
            "name":{
              "$type":"atom"
            },
            "stars":{
              "$type":"atom"
            }
          },
          "5":{
            "login":{
              "$type":"atom"
            },
            "name":{
              "$type":"atom"
            },
            "stars":{
              "$type":"atom"
            }
          },
          "6":{
            "login":{
              "$type":"atom"
            },
            "name":{
              "$type":"atom"
            },
            "stars":{
              "$type":"atom"
            }
          },
          "7":{
            "login":{
              "$type":"atom"
            },
            "name":{
              "$type":"atom"
            },
            "stars":{
              "$type":"atom"
            }
          },
          "8":{
            "login":{
              "$type":"atom"
            },
            "name":{
              "$type":"atom"
            },
            "stars":{
              "$type":"atom"
            }
          },
          "9":{
            "login":{
              "$type":"atom"
            },
            "name":{
              "$type":"atom"
            },
            "stars":{
              "$type":"atom"
            }
          },
          "10":{
            "login":{
              "$type":"atom"
            },
            "name":{
              "$type":"atom"
            },
            "stars":{
              "$type":"atom"
            }
          }
        }
      },
      "EduardAnna":{
        "name":"EduardAnna",
        "login":"EduardAnna",
        "stars":0
      },
      "pongo710":{
        "name":"David Schilling",
        "login":"pongo710",
        "stars":18
      },
      "n1try":{
        "name":"Ferdinand Mütsch",
        "login":"n1try",
        "stars":8
      },
      "Yannic92":{
        "name":"Yannic92",
        "login":"Yannic92",
        "stars":13
      },
      "flash1293":{
        "name":"Johannes Reuter",
        "login":"flash1293",
        "stars":1
      },
      "crymis":{
        "name":"Daniel Eckelt",
        "login":"crymis",
        "stars":14
      },
      "Safi1012":{
        "name":"Filipe Santos Correa",
        "login":"Safi1012",
        "stars":8
      },
      "timroes":{
        "name":"Tim Roes",
        "login":"timroes",
        "stars":701
      }
    },
    "repositoryByIndex":{
      "KordonDev":{
        "0":{
          "name":"angular-bootstrap-switch",
          "stars":0
        },
        "1":{
          "name":"angular-feedback",
          "stars":0
        },
        "2":{
          "name":"angular-multi-select",
          "stars":0
        },
        "3":{
          "name":"dotfiles",
          "stars":0
        },
        "4":{
          "name":"GameOfLive",
          "stars":0
        },
        "5":{
          "name":"github-lib",
          "stars":0
        },
        "6":{
          "name":"InstantFeed",
          "stars":0
        },
        "7":{
          "name":"karlsbad-api",
          "stars":0
        },
        "8":{
          "name":"postBot",
          "stars":0
        },
        "9":{
          "name":"publicMonologue",
          "stars":0
        },
        "10":{
          "name":"quickstart",
          "stars":0
        }
      }
    }
  }
}

Because the data is available but is not received by the requests I think the splitting of data to requests fails.

jcranendonk commented 5 years ago

Recent releases of Falcor fixed several bugs in request path deduplication, and Falcor 2 added support for partial request path deduplication. I'm closing this under the assumption that this issue has been resolved; if this is not the case, please reopen this issue or create a new one.