QueryBuilder dalam Tindakan Bahagian 1

Patricia Arquette
Lepaskan: 2024-11-26 08:41:10
asal
554 orang telah melayarinya

QueryBuilder in Action Part 1

Apabila membina aplikasi dengan Node.js secara umum atau Total.js khususnya, pertanyaan dan pengurusan data dengan cekap adalah penting. Dalam blog ini, kami akan membincangkan cara melaksanakan operasi data asas menggunakan QueryBuilder Total.js. Bahagian pertama ini akan memperkenalkan konsep asas, menunjukkan tindakan teras seperti memasukkan dan mendapatkan semula data serta mempamerkan contoh praktikal untuk membantu anda bermula.

Bermula: Meneroka QueryBuilder dalam Total.js

Total.js's QueryBuilder menawarkan lapisan abstraksi yang kuat untuk berinteraksi dengan pelbagai pangkalan data melalui operasi seperti menapis, memasukkan, mengemas kini dan mendapatkan semula data. Sama ada anda sedang mengusahakan aplikasi ringan atau mengurus pertanyaan yang kompleks, QueryBuilder menyediakan penyelesaian ORM yang ringkas namun fleksibel untuk aplikasi Node.js.

Sokongan dan Pelaksanaan Pangkalan Data

QueryBuilder bertindak sebagai lapisan tengah, mengabstraksi spesifikasi enjin pangkalan data. Untuk menggunakannya dengan berkesan, anda perlu menyepadukan pelaksanaan sedia ada atau membina sendiri yang memenuhi keperluan anda. Total.js menyokong berbilang enjin pangkalan data, memastikan fleksibiliti untuk kes penggunaan yang berbeza.

Berikut ialah pelaksanaan yang tersedia pada masa ini:

  • Pangkalan Data Terbenam NoSQL (TextDB): Ini ialah pangkalan data berasaskan fail yang ringan yang disertakan dalam teras Total.js, sesuai untuk aplikasi kecil atau prototaip.
  • PostgreSQL: Gunakan QueryBuilder dengan salah satu pangkalan data hubungan yang paling mantap dan kaya dengan ciri.
  • MySQL: Sepadukan dengan pangkalan data yang digunakan secara meluas ini untuk penyelesaian berskala dan berprestasi tinggi.
  • SQLite: Manfaatkan QueryBuilder dengan pangkalan data tanpa pelayan yang ringan ini untuk penggunaan pantas atau aplikasi terbenam.

Menyediakan QueryBuilder

Dalam panduan ini, kami akan bermula dengan pangkalan data NoSQL (TextDB) terbenam untuk menunjukkan cara mentakrif skema dan melakukan tindakan asas seperti pertanyaan, memasukkan dan mengemas kini data. Pada akhirnya, anda akan mempunyai kemahiran untuk menyesuaikan operasi ini untuk enjin pangkalan data lain yang disokong.

Menyediakan Pangkalan Data

Untuk belajar dengan berkesan, kami akan mencipta fail pangkalan data NoSQL ujian dengan sampel data pengguna.

Persediaan Pangkalan Data: Cipta fail pangkalan data/users.nosql untuk menyimpan sampel rekod pengguna:

{"id": 2, "name": "Bob", "age": 30}
{"id": 3, "name": "Charlie", "age": 28}
{"id": 4, "name": "Diana", "age": 22}
{"id": 5, "name": "Edward", "age": 35}
{"id": 6, "name": "John", "age": 45}
{"id": 7, "name": "Fiona", "age": 27}
{"id": 8, "name": "George", "age": 29}
{"id": 9, "name": "Hannah", "age": 24}
{"id": 10, "name": "Isaac", "age": 31}
{"id": 11, "name": "Julia", "age": 26}
Salin selepas log masuk
Salin selepas log masuk

Baik untuk diketahui: Anda tidak perlu mencipta fail .nosql secara manual dalam folder pangkalan data. Rangka kerja dapat menciptanya semasa operasi sisipan jika ia tidak wujud. Tetapi kandungan fail .nosql adalah plaintext dan penting untuk memahami strukturnya. Mungkin berguna untuk membetulkan kes tertentu.

Definisi Skema: Buat skema dengan tindakan dalam schemas/users.js. Kami akan menentukan tindakan untuk menyenaraikan, mendapatkan semula dan memasukkan pengguna.

Tindakan Pembina Pertanyaan Asas dengan Contoh Praktikal

Dalam schemas/users.js, kami akan mentakrifkan tindakan untuk menyenaraikan dan memasukkan pengguna. Skema ini menggunakan kaedah QueryBuilder untuk menapis data, mendapatkan semula rekod tertentu dan menambah pengguna baharu pada pangkalan data.

1. Menyenaraikan Pengguna dengan Penapis
Kami mulakan dengan menentukan tindakan senarai untuk mendapatkan semula pengguna berdasarkan kriteria seperti nama atau umur.

{"id": 2, "name": "Bob", "age": 30}
{"id": 3, "name": "Charlie", "age": 28}
{"id": 4, "name": "Diana", "age": 22}
{"id": 5, "name": "Edward", "age": 35}
{"id": 6, "name": "John", "age": 45}
{"id": 7, "name": "Fiona", "age": 27}
{"id": 8, "name": "George", "age": 29}
{"id": 9, "name": "Hannah", "age": 24}
{"id": 10, "name": "Isaac", "age": 31}
{"id": 11, "name": "Julia", "age": 26}
Salin selepas log masuk
Salin selepas log masuk

Contoh Penggunaan:

Berikut ialah beberapa variasi penggunaan senarai untuk menapis pengguna.

  • Tapis mengikut Nama:
NEWSCHEMA('Users', function(schema) {

    schema.action('list', {
        name: 'List users',
        query: 'page:Number, sort:String, name:String',
        params: 'id:String',
        action: async function($) {
            // Example: filter by name
            var users = await DATA.find('nosql/users').where('name', $.query.name).promise();
            $.callback(users); 
        }
    });
});
Salin selepas log masuk
  • Dapatkan Pengguna Pertama Sahaja:
var users = await ACTION('Users/list').where('name', 'John').promise();
console.log(users);
Salin selepas log masuk

2. Mendapatkan semula Pengguna melalui ID
Satu lagi ciri berguna ialah mendapatkan semula pengguna dengan ID mereka. Menggunakan kaedah .id() QueryBuilder menjadikan ini mudah:

var user = await DATA.find('nosql/users').first().promise();
console.log(user);
Salin selepas log masuk

Contoh Penggunaan:

var builder = DATA.find('nosql/users');
builder.id($.params.id);
// or builder.where('id', $.params.id);
$.callback(await builder.promise());
Salin selepas log masuk

3. Memasukkan Pengguna Baharu
Seterusnya, mari kita tentukan tindakan sisipan untuk menambah pengguna baharu pada pangkalan data.

var user = await ACTION('Users/list').params({ id: 5 }).promise();
console.log(user);  // Retrieves user with id 5
Salin selepas log masuk

Tindakan ini menambahkan pengguna pada pangkalan data/users.nosql. Begini cara anda boleh memanggil tindakan sisipan.

Contoh Penggunaan:

schema.action('insert', {
    name: 'Inserting new users',
    input: '*name:String, age:Number',
    output: 'success:Boolean',
    action: function($, model) {
        DATA.insert('nosql/users', model).callback(function(err) {
            if (err) {
                console.error(err);
            } else {
                $.success(true);
            }
        });
    }
});
Salin selepas log masuk

Kes Penggunaan Praktikal: QueryBuilder dalam Tindakan

1. Dapatkan Pengguna dengan Nama Yang Ditapis

// in `definitions/test.js`
ON('ready', function() {
  var result = await ACTION('Users/insert', { name: 'Alice', age: 25 }).promise();
    console.log(result);
});
Salin selepas log masuk

2. Dapatkan Pengguna melalui ID

async function getUsersByName() {
    var users = await ACTION('Users/list').query({ name: 'Hannah' }).promise();
    console.log(users);
}
getUsersByName();
Salin selepas log masuk

3. Masukkan Pengguna Baharu dan Dapatkan Senarai Kemas Kini

async function getUserByID() {
    var user = await ACTION('Users/list').params({ id: 4 }).promise();
    console.log(user);
}
getUserByID();
Salin selepas log masuk

Kesimpulan

Dalam bahagian pertama QueryBuilder in Action ini, kami merangkumi perkara penting: mencipta pangkalan data NoSQL asas, mentakrifkan tindakan skema dan menggunakan kaedah QueryBuilder untuk menyenaraikan, menapis, mendapatkan semula dan memasukkan pengguna. Kami meneroka contoh kod praktikal untuk setiap operasi untuk membantu anda memahami cara konsep ini berfungsi dalam senario dunia sebenar.
Dalam bahagian seterusnya, kami akan menyelami kaedah QueryBuilder yang lebih maju dan penapisan yang kompleks untuk memberi anda kit alat lengkap untuk mengurus data dengan cekap dalam Total.js.
Nantikan QueryBuilder dalam Tindakan Bahagian 2, di mana kami akan mendalami teknik pertanyaan lanjutan untuk mengecas aplikasi Total.js anda!

Atas ialah kandungan terperinci QueryBuilder dalam Tindakan Bahagian 1. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan