نوکودیبی
NocoDB
مدیریت دادهها با رابط Airtable-like روی دیتابیس موجود - open-source و self-hosted
نمای کلی
نود NocoDB چیست؟
نود NocoDB امکان اتصال و مدیریت دادهها از طریق NocoDB API را در n8n فراهم میکند. NocoDB یک Smart Spreadsheet اپنسورس است که روی هر دیتابیس SQL قرار میگیرد.
چرا NocoDB؟
- Open Source & Self-hosted: کنترل کامل روی دادهها (مهم برای ایران)
- Database Agnostic: روی MySQL, PostgreSQL, SQLite, MariaDB, SQL Server کار میکند
- Airtable Alternative: رابط کاربری مشابه Airtable بدون محدودیتهای قیمتی
- REST API: API کامل برای هر جدول
- Views: Grid, Gallery, Kanban, Form, Calendar views
- Collaboration: کار تیمی با roles مختلف
قابلیتهای کلیدی در n8n:
- CRUD کامل: ایجاد، خواندن، ویرایش و حذف ردیفها
- فیلتر و مرتبسازی: فیلتر پیشرفته با عملگرهای مختلف
- Lookup & Rollup: دسترسی به فیلدهای محاسباتی
- Link Records: کار با روابط بین جداول
- File Attachments: آپلود و مدیریت فایلها
- Webhook Trigger: دریافت event هنگام تغییر داده
مقایسه NocoDB vs Airtable:
| ویژگی | NocoDB | Airtable | |--------|--------|----------| | هزینه | رایگان (self-hosted) | پولی (محدودیت رکورد) | | Self-hosted | بله | خیر | | دسترسی از ایران | بله (روی سرور خودتان) | نیاز به VPN | | دیتابیس پشتیبان | SQL واقعی | اختصاصی | | API Rate Limit | نامحدود | محدود | | ظرفیت رکورد | نامحدود | ۵۰,۰۰۰ (پلن رایگان) |
احراز هویت
احراز هویت NocoDB
روش ۱: API Token (توصیه شده)
- 1وارد NocoDB Dashboard شوید
- 2روی آیکون پروفایل کلیک کنید
- 3API Tokens را انتخاب کنید
- 4"Create API Token" کلیک کنید
- 5نام و description توکن را وارد کنید
- 6Token را کپی و در n8n وارد کنید
تنظیم در n8n:
- **API URL**: آدرس NocoDB شما (مثلاً
https://nocodb.example.com) - API Token: توکن ایجاد شده
روش ۲: Auth Token (Session-based)
- 1با ایمیل و رمز عبور وارد NocoDB شوید
- 2از API
/api/v1/auth/user/signinتوکن بگیرید - 3توکن را در header
xc-authارسال کنید
⚠️ نکته: Auth Token بعد از مدتی منقضی میشود. برای automation از API Token استفاده کنید.
نصب NocoDB (Self-hosted):
Docker (سادهترین):
docker run -d --name nocodb \
-p 8080:8080 \
-e NC_DB="pg://host:5432?u=user&p=pass&d=dbname" \
nocodb/nocodb:latestبا SQLite (بدون نیاز به دیتابیس خارجی):
docker run -d --name nocodb \
-p 8080:8080 \
-v nocodb_data:/usr/app/data \
nocodb/nocodb:latestتنظیمات مهم:
NC_DB: connection string دیتابیسNC_AUTH_JWT_SECRET: secret برای JWTNC_PUBLIC_URL: آدرس عمومی NocoDBNC_DISABLE_TELE: غیرفعال کردن telemetry
عملیاتهای موجود
row-create
ایجاد ردیف جدید در جدول
row-get
دریافت یک ردیف با ID
row-update
ویرایش ردیف موجود
row-delete
حذف ردیف از جدول
row-list
دریافت لیست ردیفها با فیلتر و مرتبسازی
row-bulk-create
ایجاد چندین ردیف با یک درخواست
row-bulk-update
ویرایش چندین ردیف با یک درخواست
row-bulk-delete
حذف چندین ردیف با یک درخواست
row-count
دریافت تعداد ردیفها (با فیلتر اختیاری)
row-link
ایجاد رابطه بین ردیفهای دو جدول
table-list
دریافت لیست جداول یک base
attachment-upload
آپلود فایل به فیلد Attachment
کاربردهای متداول
کاربردهای رایج
۱. CRM ساده (مدیریت مشتریان)
NocoDB را به عنوان CRM استفاده کنید و لیدهای جدید از فرمها یا ایمیل را خودکار اضافه کنید.
Webhook (فرم تماس) → NocoDB (ایجاد ردیف در جدول Leads) → Email (ارسال تأیید) → Telegram (اطلاع تیم فروش)۲. همگامسازی با Google Sheets
دادههای NocoDB را با Google Sheets دو طرفه همگام نگه دارید.
Schedule (هر ساعت) → NocoDB (ردیفهای جدید) → Google Sheets (اضافه ردیف)
Schedule → Google Sheets (تغییرات) → NocoDB (ویرایش ردیف)۳. Content Management System
از NocoDB به عنوان headless CMS استفاده کنید و محتوا را در سایت publish کنید.
NocoDB Webhook (ردیف جدید در جدول Posts) → Code (Markdown→HTML) → Webflow/WordPress (انتشار)۴. Inventory Management
مدیریت موجودی محصولات و اطلاعرسانی خودکار وقتی موجودی کم میشود.
Schedule → NocoDB (لیست محصولات با فیلتر stock < 10) → Telegram (alert موجودی کم) → Email (سفارش به تأمینکننده)۵. Task/Project Management
جایگزین Trello/Asana با NocoDB Kanban view و خودکارسازی تغییر وضعیت.
NocoDB Webhook (Status changed) → IF (Status=Done) → Telegram (اطلاع تیم) → NocoDB (update completion date)۶. Import داده از CSV/Excel
فایلهای CSV یا Excel را خودکار به NocoDB import کنید.
Email Trigger (فایل CSV) → Code (parse CSV) → NocoDB (bulk create ردیفها)۷. گزارشگیری خودکار
هر هفته گزارش آماری از دادههای NocoDB ارسال شود.
Schedule (هفتگی) → NocoDB (لیست ردیفها) → Code (محاسبه آمار) → Email/Telegram (ارسال گزارش)۸. Multi-Table Workflow
دادهها از چندین جدول مرتبط خوانده شده و ترکیب شود.
NocoDB (لیست سفارشها) → NocoDB (اطلاعات مشتری linked) → Code (ساخت فاکتور) → Email (ارسال فاکتور)۹. Form Handler
فرمهای NocoDB (Form View) را پردازش و اقدامات خودکار انجام دهید.
NocoDB Webhook (form submission) → IF (نوع درخواست) → Telegram/Email/Slack (routing به تیم مناسب)۱۰. Backup خودکار
از دادههای NocoDB به صورت دورهای بکآپ بگیرید.
Schedule (روزانه) → NocoDB (لیست همه ردیفها) → Code (تبدیل به CSV) → Google Drive (آپلود فایل backup)نکات حرفهای
نکات حرفهای
۱. Self-hosted NocoDB برای ایران
NocoDB self-hosted بهترین گزینه برای تیمهای ایرانی است: بدون نیاز به VPN، سرعت بالا، و بدون محدودیت رکورد.
۲. از Bulk Operations استفاده کنید
بجای ایجاد تکتک ردیفها، از bulk create/update/delete استفاده کنید. تا ۱۰ برابر سریعتر و کمتر rate limit مصرف میکند.
۳. Filter Syntax
فیلترهای NocoDB از syntax خاصی استفاده میکنند:
(field,eq,value)- برابر(field,neq,value)- نابرابر(field,gt,value)- بزرگتر(field,lt,value)- کوچکتر(field,like,%value%)- شامل(field,is,null)- خالی- ترکیب:
(field1,eq,val1)~and(field2,gt,val2)
۴. View-based Filtering
بجای نوشتن فیلتر پیچیده در API، یک View با فیلتر در NocoDB بسازید و از View ID استفاده کنید.
۵. Webhook بجای Polling
بجای Schedule + List، از NocoDB Webhooks استفاده کنید. real-time و بدون overhead است.
۶. فیلدهای Attachment
برای آپلود فایل، ابتدا فایل را به storage آپلود کنید و سپس URL را در فیلد Attachment قرار دهید.
۷. Sort Syntax
fieldName: مرتبسازی صعودی (A-Z)-fieldName: مرتبسازی نزولی (Z-A)- چندین فیلد:
-CreatedAt,Name
۸. Pagination برای دادههای زیاد
NocoDB حداکثر ۱,۰۰۰ ردیف در هر صفحه برمیگرداند. برای دادههای بیشتر از limit و offset استفاده کنید.
۹. از Fields Parameter استفاده کنید
فقط فیلدهای مورد نیاز را درخواست کنید: fields=Name,Email,Status. این کار سرعت را بالا میبرد.
۱۰. NocoDB v2 API
نسخه v2 API بسیاری بهبودها دارد: pagination بهتر، filter syntax سادهتر، و bulk operations بهینهتر. همیشه از آخرین نسخه استفاده کنید.
۱۱. Shared Views
از Shared Views (فقط خواندن) برای embed کردن دادهها در سایت استفاده کنید. بدون نیاز به API Token.
۱۲. Formula Fields
از Formula fields برای محاسبات سمت دیتابیس استفاده کنید. این فیلدها در خروجی API قابل خواندن هستند.
۱۳. Form Views
از NocoDB Form View برای جمعآوری داده از کاربران استفاده کنید. فرمها بدون لاگین قابل دسترسی هستند.
۱۴. Docker Compose
برای production از Docker Compose با PostgreSQL backend استفاده کنید:
nocodb:
image: nocodb/nocodb:latest
environment:
NC_DB: "pg://postgres:5432?u=user&p=pass&d=nocodb"
ports: ["8080:8080"]۱۵. Backup Strategy
از NocoDB export و n8n Schedule برای بکآپ خودکار استفاده کنید. دادهها را به Google Drive یا S3 ارسال کنید.
رفع مشکلات
رفع مشکلات رایج
❌ خطای 401 Unauthorized
علت: API Token نامعتبر یا منقضی
راهحل
- Token را بررسی و در صورت نیاز regenerate کنید
- مطمئن شوید API URL شامل protocol (https://) است
- اگر از Auth Token استفاده میکنید، ممکن است منقضی شده باشد
❌ خطای 404 Not Found
علت: Table ID یا Row ID نامعتبر
راهحل
- Table ID را از URL یا API دریافت کنید (نه نام جدول)
- مطمئن شوید ردیف حذف نشده باشد
- NocoDB v2 از
/api/v2/استفاده میکند (بجای v1)
❌ خطای "Field not found"
علت: نام فیلد نادرست
راهحل
- نام فیلد باید exact match باشد (case-sensitive)
- از API لیست فیلدها را دریافت کنید
- فیلدهای computed (Lookup, Rollup, Formula) قابل نوشتن نیستند
❌ خطای "Required field missing"
علت: فیلد اجباری مقدار ندارد
راهحل
- فیلدهای required را در NocoDB بررسی کنید
- مطمئن شوید همه فیلدهای اجباری در data ارسال شدهاند
❌ خطای Rate Limit
علت: تعداد درخواستها زیاد (در نسخه cloud)
راهحل
- Self-hosted NocoDB محدودیت rate ندارد
- بین درخواستها Wait node اضافه کنید
- از bulk operations (bulk create/update/delete) استفاده کنید
❌ Webhook Event دریافت نمیشود
علت: تنظیمات Webhook نادرست
راهحل
- در NocoDB به Table > Webhooks بروید
- URL n8n Webhook را وارد کنید
- Event type صحیح (After Insert, After Update, After Delete) را انتخاب کنید
- مطمئن شوید n8n از NocoDB قابل دسترسی است
❌ خطای Connection Timeout
علت: NocoDB سرور قابل دسترسی نیست
راهحل
- آدرس NocoDB را بررسی کنید
- مطمئن شوید پورت باز است (معمولاً 8080)
- اگر Docker استفاده میکنید، network settings را بررسی کنید
- SSL certificate معتبر باشد
❌ دادههای Linked Record نمایش داده نمیشود
علت: فیلد Link/LinkToAnotherRecord به صورت پیشفرض expand نمیشود
راهحل
- از nested read API استفاده کنید
- یا ابتدا ردیف اصلی و سپس linked records را جداگانه بخوانید
