2016-02-07 1 views
0

Я получил следующие пути, определенные на маршрутизаторе:

getProjectById[{keys:ids}][{keys:props}] 
projects[{ranges:ranges}][{keys:props}] 

На клиенте я могу успешно получить индивидуальные проекты с помощью следующего запроса:

model.get(
    ['getProjectById', 'ffd38a56-cca2-11e5-9e6a-695c9890612f', 'name'], 
    ['getProjectById', 'ffd38a55-cca2-11e5-9e6a-695c9890612f', 'name']).then((data) => { 
    console.log('valid json response ->', data); 
}); 

'projects' route возвращает ссылку на каждый отдельный проект, но когда я делаю следующий запрос, я получаю undefined как мой ответ:

model.get(['projects', { from: 0, to: 2}, ['name', 'overview']]).then((data) => { 
    console.log('response is undefined ->', data); 
}); 

Конечной сервер возвращает обещание, когда это, наконец, решает он содержит следующий массив путей:

[ 
    { path: ['projects', 0], value: { $ref(['getProjectById', 'ffd38a56-cca2-11e5-9e6a-695c9890612f'] }}, 
    { path: ['projects', 1], value: { $ref(['getProjectById', 'ffd38a55-cca2-11e5-9e6a-695c9890612f'] }}, 
    { path: ['projects', 2 ], value : { $atom(undefined) } 
] 

Согласно документации, это должно выполнять второстепенный удар по маршруту «getProjectById» проходящей в массиве идентификаторов, но это никогда не запускается.

+0

Update Я раскалывался под капотом, и, похоже, маршрутизатор Falcor проходит только то, что на самом деле находится в кеше. Я обновил ** project ** endpoint, чтобы вернуть дополнительный путь и значение для 'getProjectById', и это перемещается вокруг проблемы. – Jake

+0

Корневая проблема сводилась к ** проектам [{диапазоны: диапазоны}] [{keys: props}] ** удаление конечной точки ** [{ключ: реквизит}] ** решает эту проблему. – Jake

ответ

0

У меня была аналогичная проблема, возможно, это поможет.

Я приведу пример, как я решил это в прошлом:

route: 'articlesById[{keys}]["_id","title"]', 

Первый маршрут, который содержит $ реф (не работает):

route: 'articles[{integers}]["title"]', 
get: (pathSet) => { 
    // striped 

    let articleRef = $ref(['articlesById', currentMongoID]); 

    return { 
    path: ['articles', index], 
    value: articleRef 
    }; 
} 
FIX:

Исключить [ «название»] из маршрута статей, поэтому новый рабочий код является:

route: 'articles[{integers}]', 
get: (pathSet) => { 
    // striped 

    let articleRef = $ref(['articlesById', currentMongoID]); 

    return { 
    path: ['articles', index], 
    value: articleRef 
    }; 
} 

Как вы можете видеть, я удалил [ «название»] выше ... Вы также должны убедиться, что в articlesById, у вас есть этот «титул» на месте при возврате данных так:

{ 
    route: 'articlesById[{keys}]["_id","title"]', 
    // striped 
    articleResObj.title = "WE HAVE TITLE HERE"; // make sure of this when returning 
    results.push({ 
    path: ['articlesById', currentIdString], 
    value: articleResObj 
    });