Професионална програма
Loading...
naskobogdanov avatar naskobogdanov 11 Точки

Можеш да хвърлиш едно око на моето решение ТУК.
Незнам до каква степен е опримизирано, но работи.

Успех!

0
antonp1p2 avatar antonp1p2 17 Точки

И при мен е така само че заради някаква причина не работи. Каква ти е връзката между двете таблици ? Така създавам ред в Town таблицата --> 

{
  "name": "Liverpool",
  "country": 
   {
     "_type" : "KinveyRef",
     "_id" : (Englands country row id),
     "_collection" : "Country" 
   } 
}
0
15/03/2016 20:53:57
naskobogdanov avatar naskobogdanov 11 Точки

При мен градовете се наливат едната колона, а държавите в другата. 
По този начин в едната колона имам повтарящисе държави, които ги филтрирам в client-side, да не показва повтарящите се.
След което, за да ми покаже градовете пращам само една GET заявка с филтър по държава.

$.ajax({
        method: 'GET',
        headers: {
            'Authorization' : 'Basic bmFza376MTIzNA==',
            'X-Kinvey-API-Version' : '3'
        },
        contentType: 'application/json',

        url: 'https://baas.kinvey.com/appdata/kid_WyOklpXfkZ/Town?query={"country" : "' + countryName + '"}',
        error: ajaxError,
        success: townsLoaded

    });

Както казах, не е съвсем оптимизирано, но работи.
Това беше първото нещо, което се сетих ;)
 

0
antonp1p2 avatar antonp1p2 17 Точки

А колко таблици имаш ? Имаш отделна таблица за Държавите и отделна за Градовете нали ? Има ли някаква връзка между тях ? 
При мен в таблицата на Градовете имам две колони с Имената на градовете и Държавата. Като в колоната на държавата имам редовете с всички пропъртитата от държавите в таблицата с Държавите. Като JOIN на две таблици в SQL. 

0
15/03/2016 21:30:23
naskobogdanov avatar naskobogdanov 11 Точки

Имам само една таблица с две колони. 
Защо трябва да имам две таблици?

0
antonp1p2 avatar antonp1p2 17 Точки

Амии... явно аз не съм разбрал условието. Но отначалото си мислех че трябва да имаме две таблици едната за държавите с техните пропъртита и едната за градовете с техните си пропъртита и така си ги направих и така си нацъках и 5те таска по това домашно. Освен този 4-тия. Така с една таблица е ясно как се прави.

И все пак остава въпроса как се правят заявки с две релативни таблици :Д

0
naskobogdanov avatar naskobogdanov 11 Точки

По условие, трябва да имаш две таблици, една с държави и още една с държави и градове.
А за връзките между таблиците, остава TODO за изпита :)

1
antonp1p2 avatar antonp1p2 17 Точки

Мм... намерих нaчин. Малко странен обачe си работи. Ето с такъв URL --> 

http://baas.kinvey.com/appdata/some_key/Town?resolve_depth=2&retainReferences=false

http://devcenter.kinvey.com/rest/guides/datastore#RelationalData   Ето тук можеш да прочетеш за връзки между таблици и защо се използва този URL. Накратко той премахва _obj пропъртито, и така пропъртито country в Town таблицата си става обикновена пропърти:обект двойка... Става по-лесно да търсим стойности на пропъртитата в country пропъртито на Town таблицата.

И все пак моето решение с този URL връща всичко от Town таблицата и после го филтрирам с If-oве. Иска ми са да разбера как да докарам URL-a така че да нямам нужда от тия проверки при success-а и директно да си ми връща името на града чийто държава е зададената държава от потребителя.

Ето как правя проверката -->
 

countryNameForTownSelection = $('#select-name').val();
function takeTownsOut(data) {
    $('body').append('<ul id="towns-list"/>');
    for(var i in data){
        var townData = data[i];
        console.log(townData.name);
        if(townData.country.name === countryNameForTownSelection){
            $('#towns-list').append('<li id="iid' + i + '" />');
            $('#iid' + i).append('<strong />').html(townData.name);
        }
    }
}



Дано си ме разбрал и да съм ти бил полезен. :)

1
15/03/2016 22:46:43