Model terhitung adalah model virtual. Model ini dibuat dengan memproses data dari model lain atau resource eksternal. Data diproses dan disimpan di klien atau server App Maker, bukan dalam database.
Model terhitung dapat melakukan hal berikut:
- mensintesis laporan kustom dari data model lain
- mendapatkan data dari layanan web eksternal
Jenis model terhitung
App Maker memiliki tiga jenis model terhitung:
- SQL terhitung: Model ini menggunakan kueri SQL ke database Cloud SQL aplikasi untuk mengisi record-nya. Pelajari model terhitung SQL lebih lanjut.
- Terhitung: Model ini menggunakan skrip kueri sisi server yang menjalankan beberapa logika dan menampilkan array record. Pelajari Skrip kueri dan contoh lebih lanjut.
- Terhitung sisi klien: Model ini menggunakan skrip kueri sisi klien untuk mengambil data secara bersamaan atau menggunakan callback untuk menampilkan hasil yang tidak bersamaan.
Model terhitung sisi klien
Model terhitung sisi klien menggunakan skrip kueri kustom yang berjalan, bukan kueri sumber data normal, yang meneruskan setiap filter dari parameter kueri.
Untuk menggunakan skrip kueri kustom:
- Buka tab Sumber data dari model terhitung sisi klien.
- Di kotak kode Kueri, masukkan skrip kueri kustom Anda. Skrip Anda harus menyertakan pernyataan pengembalian.
- Untuk merender data yang diambil dari layanan pihak ketiga:
- Petakan kueri skrip Anda dengan kueri API pihak ketiga.
- Petakan data yang ditampilkan ke record model.
Model mana yang harus Anda gunakan?
Lihat tabel berikut dan batasan model terhitung untuk menentukan jenis model terbaik yang akan digunakan.
Sasaran | Model yang akan digunakan |
---|---|
Mengubah struktur data dari model di aplikasi Anda. | Model SQL Terhitung atau Terhitung (sisi server).
Jika model terhitung Anda menggunakan banyak kolom yang sama dengan model yang ada, gunakan sumber data kueri, bukan model terhitung sisi server. Sumber data kueri biasanya lebih sederhana. |
Mengambil data menggunakan API dan library sisi klien. | Model terhitung sisi klien
Dengan model ini, Anda bisa mendapatkan data menggunakan Google API atau layanan pihak ketiga, seperti Facebook SDK atau SalesForce API. |
Menampilkan komponen aplikasi dengan cepat, seperti diagram dan menu dinamis, tanpa membuat kueri ke server. | Model terhitung sisi klien |
Batasan
Batasan model terhitung sisi server:
- Record-nya tidak dapat diubah atau dihapus (record bersifat hanya baca).
- Record-nya tidak dapat dibuat di klien.
- Model ini tidak dapat memiliki relasi dengan model App Maker lainnya, termasuk dengan model ini sendiri.
- Kueri model SQL terhitung tidak tunduk pada batasan keamanan yang ditetapkan untuk model yang dibuat kuerinya. Tetapkan batasan keamanan untuk model SQL terhitung itu sendiri di tab Keamanan.
Batasan model terhitung sisi klien:
- Record-nya tidak dapat diubah atau dihapus (record bersifat hanya baca).
- Model ini tidak dapat memiliki relasi dengan model App Maker lainnya, termasuk dengan model ini sendiri.
- Model ini mendukung konfigurasi paging atau pengurutan.
- Model ini tidak mendukung peristiwa atau konfigurasi keamanan.
- Error ditampilkan jika hasil ditampilkan lebih dari satu kali, misalnya panggilan callback ganda atau panggilan callback dan pengembalian.
Contoh model terhitung
Model SQL terhitung
Untuk contoh model SQL terhitung, lihat Cloud SQL.
Skrip kueri sisi server
Skrip kueri berikut menggunakan kolom Location
pada model Employee
untuk menghitung jumlah karyawan di setiap lokasi:
var calculatedModelRecords = [];
var recordsByLocation = {};
var allEmployees = app.models.Employee.newQuery().run();
for (var i = 0; i < allEmployees.length; i++) {
var employee = allEmployees[i];
if (!recordsByLocation[employee.Location]) {
var calculatedModelRecord = app.models.EmployeesByLocation.newRecord();
calculatedModelRecord.NumberOfEmployees = 1;
calculatedModelRecord.Location = employee.Location;
calculatedModelRecords.push(calculatedModelRecord);
recordsByLocation[employee.Location] = calculatedModelRecord;
} else {
recordsByLocation[employee.Location].NumberOfEmployees++;
}
}
return calculatedModelRecords;
Skrip ini diulang di setiap record dalam model Employee
dan melakukan tindakan berikut:
- Membuat record untuk setiap lokasi baru yang ditemukannya.
- Menambah jumlah karyawan untuk setiap record dengan lokasi berulang.
Skrip ini membuat record model terhitung menggunakan newRecord()
, tetapi metode ini tidak benar-benar membuat record dalam backend data. Sebaliknya, model menampilkan record ke klien secara langsung.
Untuk contoh lainnya, lihat Skrip kueri.
Model terhitung sisi klien
Contoh 1: Kueri bersamaan App Maker Client API
Skrip berikut menampilkan barisan Fibonacci. Operasi App Maker lainnya menunggu hasilnya sebelum melanjutkan.
var limit = 10;
var result = [];
for (var i=0; i < limit; i++) {
var record = recordFactory.create();
if (i < 2) {
record.Value = 1;
} else {
record.Value = result[i-1].Value + result[i-2].Value;
}
result.push(record);
}
return result;
Contoh 2: Permintaan bersamaan ke API pihak ketiga
Skrip berikut menggunakan Google Books API untuk menelusuri buku yang cocok dengan input pengguna (SearchString
) dan menampilkan hasilnya dengan fungsi callback.
// Note: Include JQuery library for the application
// Search for a book matching the user's search string
var searchString = query.parameters.SearchString;
$.getJSON('https://www.googleapis.com/books/v1/volumes?q=' + encodeURI(searchString), function(result){
var records = result.items.map(function(bookData){
// Create a record from the book's data
var record = recordFactory.create();
record.Title = bookData.volumeInfo.title || null;
return record;
});
// Return results
callback.success(records);
});
Contoh 3: Kueri bersamaan App Maker Client API dengan fungsi callback yang berhasil dan gagal
Skrip berikut menampilkan hasil secara bersamaan ketika hasil tidak langsung dibutuhkan.
externalApi.execute(function(results) {
if (results.length) {
сallback.success(mapResultsToRecords(results));
} else {
сallback.failure(‘No results were found');
}
});