2015-10-14 6 views
1

Я играю с Falcor, чтобы узнать, может ли компания, с которой я работаю, использовать ее, поэтому я довольно новичок.Falcor - глубокие вложенные ссылки

Я использую модель в качестве источника данных.

Это моя модель:

var model = new falcor.Model({ 
    cache:{ 
    currenciesById: { 
     "1": { code: "USD", format: "$" }, 
     "2": { code: "GBP", format: "£" }, 
     "3": { code: "EUR", format: "€" }, 
     "4": { code: "YEN", format: "¥"} 
    }, 
    validCurrencies: { 
     "1": { $type: "ref", value: ["currenciesById", 1] }, 
     "2": { $type: "ref", value: ["currenciesById", 2] }, 
     "3": { $type: "ref", value: ["currenciesById", 3] }, 
     "4": { $type: "ref", value: ["currenciesById", 4] } 
    }, 
    quotesByPart: { 
     "100" : {price: 1768.34, currency: { $type: "ref", value: ["currencyById", 1] }}, 
     "200" : {price: 2834.44, currency: { $type: "ref", value: ["currencyById", 2] }}, 
     "201" : {price: 7803.54, currency: { $type: "ref", value: ["currencyById", 3] }}, 
     "347" : {price: 389.09, currency: { $type: "ref", value: ["currencyById", 4] }} 
    }, 
    quotes: { 
     "1": { $type: "ref", value: ["quotesByPart", 100] }, 
     "2": { $type: "ref", value: ["quotesByPart", 200] }, 
     "307": { $type: "ref", value: ["quotesByPart", 347] } 
    }, 
    reservedQuotes:{ 
     "1": { $type: "ref", value: ["quotesByPart", 201] } 
    } 
    } 
}); 

Когда я делаю этот запрос:

get('quotes[307].["price", "currency"]') 

Это ответ Falcor в:

{ 
    "json": { 
     "quotes": { 
     "307": { 
      "price": 389.09, 
      "currency": [ 
       "currencyById", 
       4 
      ] 
     } 
     } 
    } 
} 

Это то, что я был expencting. Фалькор считает, что цитаты [307] на самом деле являются ссылкой на quotesByPart [347] и решают его, фактически он возвращает правильную цену и ссылку на валюту.

Затем я попытался разрешить Второму вопросу ссылаться на Вторую ссылку - валюту в том же запросе. Я пытался писать запросы, как это:

get('quotes[307].["currency"].["code"]') 

или от отчаяния

get('quotes[307].["currency.code"]') 

, и я не мог получить Falcor разрешить вторую ссылку.

Может кто-нибудь сказать мне, что мне здесь не хватает?

ответ

1

Проблема была в моей модели.

Правильная модель была эта одна ниже:

var model = new falcor.Model({ 
    cache:{ 
    currencyById: { 
     "1": { code: "USD", format: "$" }, 
     "2": { code: "GBP", format: "£" }, 
     "3": { code: "EUR", format: "€" }, 
     "4": { code: "YEN", format: "¥"} 
    }, 
    validCurrencies: { 
     "1": { $type: "ref", value: ["currencyById", 1] }, 
     "2": { $type: "ref", value: ["currencyById", 2] }, 
     "3": { $type: "ref", value: ["currencyById", 3] }, 
     "4": { $type: "ref", value: ["currencyById", 4] } 
    }, 
    quotesByPart: { 
     "100" : {price: 1768.34, currency: { $type: "ref", value: ["currencyById", 1] }}, 
     "200" : {price: 2834.44, currency: { $type: "ref", value: ["currencyById", 2] }}, 
     "201" : {price: 7803.54, currency: { $type: "ref", value: ["currencyById", 3] }}, 
     "347" : {price: 389.09, currency: { $type: "ref", value: ["currencyById", 4] }} 
    }, 
    quotes: { 
     "1": { $type: "ref", value: ["quotesByPart", 100] }, 
     "2": { $type: "ref", value: ["quotesByPart", 200] }, 
     "307": { $type: "ref", value: ["quotesByPart", 347] } 
    }, 
    reservedQuotes:{ 
     "1": { $type: "ref", value: ["quotesByPart", 201] } 
    } 
    } 
}); 

с этой моделью Falcor работает, как ожидалось, и даже глубокие вложенные ссылки разрешены.

+0

Вопрос: 'currenciesById' должен был быть' currencyById'? Хорошо, что бы синтаксис был для получения «цены» цитаты, а также «кода» и «форматирования» «валюты»? Это 'get ('quotes [307]. [" Price "," currency.code "," currency.format "]')'? Документов для Falcor Paths по-прежнему не хватает ... – jordanb