Mobile Services JS Backend - Data - Okuma(Read)

 Önceki yazıda verileri kayıt ettik şimdi ise bu verilerin uygulama açıldığını MainPage'e yüklenmesini istiyoruz. Yani uygulamamız açıldığını azure mobile services'da bulunan Kisiler isimli tablodan verileri okuyacak ve ekrandaki ListView'da gösterecek. Bunun için MainPage.xaml.cs dosyasına aşağıdaki kodu ekliyoruz.

protected override void OnNavigatedTo(NavigationEventArgs e)
{
     base.OnNavigatedTo(e);
     ListViewPersons.ItemsSource = kisiler;
     LoadData();
}
private void AppBarButton_Click(object sender, RoutedEventArgs e)
{
       LoadData();
}
private async void LoadData()
{
       kisiler.Clear();
       var sonuc = await tableClient.ToEnumerableAsync();
       foreach (var item in sonuc)
       {
            kisiler.Add(item);
       }
}

Yukarıdaki kod parçasını inceleyim.

OnNavigatedTo methodu sayfa açıldığında çalışacak bir methoddur ve veri çekme işlemini burada yapmamız gerekmektedir. LoadData() adındaki methodu çağırıyoruz. LoadData() methodu ilk olarak kisiler listesinin içini boşaltıyor ve daha sonra mobile services'da bulunan tablodan verileri çekiyor. Daha sonra ise bir foreach yardımıyla kisiler listesine atıyoruz ve bu sayede listview'da görünür hale geliyorlar. Aynı LoadData() methodu refresh butonuna basıldığındada çağırılıyor. Bu şekilde bilgileri okuyabiliyoruz.

Örneğin belli bir koşula göre sorgu yapmak istersek aşağıdaki gibi bir kod yazmamız gerekmektedir.

var sonuc = await tableClient.Where(x=>x.Soyadi=="test").ToEnumerableAsync();

Tüm bu sorguların sonucunda dönen liste maximum 500 item içermektedir. Daha fazla veriyi aynı anda rest api üzerinde çekmek doğru olmadığından bu şekilde bir yapı sağlanıyor. Take(1000) gibi method ile çekmek istediğiniz verinin adetini belirtebilirsiniz.

Sonuç

Aşağıda gördüğünüz gibi bilgileri kayıt ettik ve okuduk.

Sonuc

   

Server Tarafında Script

Server tarafında Read operation'i gerçekleşirken gelen query, user ve requesti yakalayarak işlem yapmanıza imkanınız olacaktır. Bunun için insertta olduğu gibi server tarafında script yazmanız gerecek.

   

Server Side Script

Örneğin query.Where{userId:user.userId}); gibi bir komut ile sadece o kullanıcının insert ettiği sonucları çekmeniz mümkün. Böylece gelen tüm querylere otomatik olarak UserId eklenmiş olacaktır. Bu sadece bir örnek yapacağınız şeylerin sınırı olmadığını tekrar belirtmek isterim.

   

Aşağıdaki linkten kodlara ulaşabilirsiniz.

https://github.com/altinokdarici/AzureEgitimSerisi/tree/master/MobileServices/JavascriptBackend/Data

   

   

Azure Mobile Services JS Backend - Data

Azure Mobile Services yaratırken JS backend seçtik ve devam ediyoruz. Bu yazıda mobile uygulamadan Azure'a nasıl veri gönderilir ve bu veriler nasıl bir yapıda kayıt edilirden bahsedeceğim.

   

SQL veya daha farklı veritabanı yapıları bilen arkadaşlar lütfen bu yazıyı okumaya başlarken tüm bilgilerini unutsunlar çünkü hiç bir SQL veya benzer bir bilgiye ihtiyaç duymacağız.

   

Tablo Oluşturmak

   

İlk olarak daha önce yarattığımız mobile servisimizin içine giriyoruz ve yukarıdaki tab'lardan DATA sekmesine tıklıyoruz. Açılan sayfada hiç tablomuz olmadığını söylüyor ve "Add a table"'a tıklayarak yeni bir tablo oluşturuyoruz. Bu tablo için karşımıza aşağıdaki popup çıkıyor.

   

Create a new table

   

Tablomuza bir isim veriyoruz ve ardından aşağıdaki ayarları değiştirmeden sağ altta bulunan butona basarak tablomuzu oluşturuyoruz. Peki bu ayarlar ne işe yarar? Gördüğünüz gibi 4 farklı permission (yetki) mevcut bunlar ile tablodu operation'lari kimin yapabileceğine karar veriyoruz bydefault tüm ayarlar "Anybody with the Application Key" olarak geliyor yani Mobile Service URL ve Key'ini bilen kişiler veya client'lar sadece bu işlemleri yapabilir. Eğer sadece URL'I bilen herkes bu işlemi yapsın isterseniz bunu değiştirmeniz mümkün. Buradaki tüm seçenekler aşağıda beliritilmiştir:

  1. Anybody with the Application Key: URL ve Key'leri bilen tüm client'lar işlem yapabilir.
  2. Only Authenticated Users: Sadece Mobile Service aracılığı ile login olmuş(twitter, google, facebook, ms account vb.) kullanıcılar işlem yapabilir. Bu işlem için URL, Key ve Login gereklidir.
  3. Only Scripts and Admins: Bu seçenek ile sadece server tarafında çalışan scriptler ve admin kullanıcılar işlem yapabilir.

   

Enable Soft Delete açıklamalı checkbox ile SoftDelete aktif olup olmayacağına karar veriyorz. (SoftDelete: datayı sildiğiniz aslında tablodan silinmez ancak ileriki sorgularda karşınıza çıkmaz böylece silinen dataları görebilme imkanına sahip olursunuz.)

   

Ben şimdi Kisiler adında bir tablo yaratacağım ve bu tablo içerisinde Adi, Soyadi, Yasi gibi bilgileri saklayacağım. Yukarıdaki pencereye Kisiler yazıp Ok'e basarak ilerleyebilirsiniz.

   

Kisiler Tablosu

   

Yukarıda gördüğünüz gibi tablo yaratıldı ve artık mobile services tarafındaki işlerimiz bitti. Daha fazla tablo oluşturmak isterseniz aşağı ortada bulunan + butonu ile yeni tablo yaratmanız mümkün.

   

Dikkat ederseniz tabloda hangi kolonların olacağını mobile services'a söylemedik.

   

Insert & Update & Read & Delete işlemleri için diğer yazıları okuyabilirsiniz.