راهنمای پایگاه داده MongoDB

فینچ از پکیج mongo_dart برای عملیات پایگاه داده MongoDB استفاده می‌کند. می‌توانید با استفاده از این پکیج عملیات پایگاه داده را در برنامه فینچ خود انجام دهید.

اتصال به پایگاه داده MongoDB

برای اتصال به پایگاه داده MongoDB باید کد زیر را به فایل app.dart خود اضافه کنید:

import 'package:finch/finch.dart';

void main() async {
  final configs = FinchConfigs(
    dbConfig: FinchDBConfig(
      enable: true,
      host: 'localhost',
      port: '27017',
      user: 'database_username',
      pass: 'database_password',
      dbName: 'database_name',
    ),
  );

  final server = FinchApp(configs: configs);

  server.start().then((value) {
    Console.p("سرور اجرا شد: http://localhost:${value.port}");
  });
}

در مثال بالا، پایگاه داده MongoDB فعال شده و مقادیر هاست، پورت، نام کاربری، رمز عبور و نام پایگاه داده مشخص شده است. می‌توانید این مقادیر را مطابق با تنظیمات پایگاه داده خود تغییر دهید.

استفاده از پایگاه داده MongoDB

برای استفاده از پایگاه داده MongoDB می‌توانید از ویژگی app.mongoDb استفاده کنید. این ویژگی یک شیء Db بازمی‌گرداند که می‌توانید برای عملیات پایگاه داده از آن استفاده کنید.

var db = app.mongoDb;

کالکشن‌های پایگاه داده

فینچ راه ساده‌ای برای ساخت کالکشن‌های پایگاه داده MongoDB فراهم می‌کند. می‌توانید از کلاس DBCollection برای تعریف ساختار کالکشن خود استفاده کنید. این کلاس راه ساده‌ای برای تعریف فیلدهای کالکشن ارائه می‌دهد. می‌توانید از کلاس‌های DBField برای تعریف فیلدها استفاده کنید.

import 'package:finch/finch.dart';

class ExampleCollection extends DBCollection {
  ExampleCollection() : super(db: app.mongoDb, name: 'example');

  Future<void> insertExample(ExampleModel model) async {
    await collection.insert(model.toJson());
  }

  Future<List<ExampleModel>> getAllExample({
    int? start,
    int? count,
  }) async {
    start = (start != null && start > 0) ? start : null;
    var rows = await collection
        .modernFind(
          limit: count,
          skip: start,
          sort: DQ.order('_id'),
        )
        .toList();
    return ExampleModel.fromListJson(rows);
  }
}

در مثال بالا، یک کالکشن به نام example با دو فیلد title و slug تعریف شده است. فیلد title به عنوان کلید اصلی و از نوع رشته تعریف شده و فیلد slug نیز از نوع رشته است.

می‌توانید از کلاس DBCollection برای ساخت کالکشن‌های برنامه خود استفاده کنید. همچنین می‌توانید با این کلاس روابط بین کالکشن‌ها را نیز تعریف کنید. برای مثال، می‌توانید رابطه کلید خارجی بین دو کالکشن تعریف کنید.

کوئری گرفتن داده‌ها

فینچ راه ساده‌ای برای کوئری گرفتن داده‌ها از پایگاه داده MongoDB فراهم می‌کند. می‌توانید از متد modernFind برای کوئری گرفتن داده‌ها از کالکشن خود استفاده کنید. این متد راه ساده‌ای برای کوئری گرفتن داده‌ها ارائه می‌دهد. همچنین می‌توانید از کلاس DQ برای ساخت کوئری استفاده کنید.

var rows = await collection
    .modernFind(
      limit: count,
      skip: start,
      sort: DQ.order('_id'),
    )
    .toList();

مثال

برای اطلاعات بیشتر می‌توانید پروژه example را در مخزن فینچ مشاهده کنید. این پروژه از پایگاه داده MongoDB و امکانات پایگاه داده فینچ استفاده می‌کند.