تحذير! تم دمج هذا المشروع في الأجندة الرئيسية. تم إهمال هذا git repo الآن.
لوحة معلومات حديثة وآمنة وموثوقة لـ Agenda مع إمكانيات البحث وترقيم الصفحات المكتوبة بلغة vue.js
require(agendash)
إلى require(agendash2)
مطلوب الحد الأدنى من الإصدار 12 من Node.js لتبعية @hapi/@hapi
(راجع رقم 23)
قد يتطلب الأمر إنشاء الفهرس التالي لفرز أسرع (انظر رقم 24)
db.agendaJobs.ensureIndex({
"nextRunAt" : -1,
"lastRunAt" : -1,
"lastFinishedAt" : -1
}, "agendash2")
في Software On The Road، كنا نستخدم جدول الأعمال وجدول الأعمال في كل مشروع تقريبًا منذ عام 2017 ولكن كان له دائمًا حدوده. ونظرًا لمشكلة أمنية حرجة وجدناها في البرنامج الوسيط للخادم، قررنا أن نقوم بتقسيم الأجندة وإعادة كتابتها من البداية. في البداية، حاولنا فقط تصحيح التعليمات البرمجية الموجودة ولكن تمت كتابتها بتنسيق backbone.js، لذلك سيكون من الصعب تعلمها باستخدام vue.js فقط لإعادة إنشاء الميزات الحالية. بعد كل شيء، هذا مجرد CRUD بسيط مع ترقيم الصفحات والبحث، لا شيء خيالي.
npm install --save agendash2
ملاحظة : يتطلب Agendash
إصدار mongodb >2.6.0 لإجراء الاستعلامات المجمعة المطلوبة. هذا هو إصدار قاعدة بيانات مونغو الخاصة بك، وليس إصدار حزمة العقدة الخاصة بك! للتحقق من إصدار قاعدة البيانات لديك، اتصل بـ mongo وقم بتشغيل db.version()
.
يوفر Agendash2 برنامجًا وسيطًا سريعًا يمكنك استخدامه في مسار محدد، على سبيل المثال، سيجعل هذا Agendash2 متاحًا على موقعك على المسار /dash
. ملاحظة: لا تحاول تحميل Agendash2 على مستوى الجذر مثل app.use('/', Agendash(agenda))
.
var express = require ( 'express' ) ;
var app = express ( ) ;
// ... your other express middleware like body-parser
var Agenda = require ( 'agenda' ) ;
var Agendash = require ( 'agendash2' ) ;
var agenda = new Agenda ( { db : { address : 'mongodb://127.0.0.1/agendaDb' } } ) ;
// or provide your own mongo client:
// var agenda = new Agenda({mongo: myMongoClient})
app . use ( '/dash' , Agendash ( agenda ) ) ;
// ... your other routes
// ... start your server
من خلال تركيب Agendash2 كبرنامج وسيط على مسار محدد، يمكنك توفير المصادقة الخاصة بك لهذا المسار. على سبيل المثال، إذا كانت لديك جلسة مصادق عليها باستخدام جواز السفر، فيمكنك حماية مسار لوحة المعلومات مثل هذا:
app . use ( '/dash' ,
function ( req , res , next ) {
if ( ! req . user || ! req . user . is_admin ) {
res . send ( 401 ) ;
} else {
next ( ) ;
}
} ,
Agendash ( agenda )
) ;
ستأتي البرامج الوسيطة الأخرى قريبًا في المجلد /lib/middlewares/
. سيتعين عليك فقط تحديث السطر الأخير للمطالبة بالبرمجيات الوسيطة التي تحتاجها:
app . use ( '/agendash' , Agendash ( agenda , {
middleware : 'koa'
} ) ) ;
لاحظ أنه إذا كنت تستخدم برنامجًا وسيطًا لحماية CSRF مثل csurf
، فقد تحتاج إلى تكوينه لإيقاف مسارات Agendash.
يأتي Agendash مع تطبيق Express مستقل يمكنك استخدامه على النحو التالي:
./node_modules/.bin/agendash2 --db=mongodb://localhost/agendaDb --collection=agendaCollection --port=3001
أو هكذا، بالنسبة إلى agendaJobs
المجموعة الافتراضية والمنفذ الافتراضي 3000
:
./node_modules/.bin/agendash2 --db=mongodb://localhost/agendaDb
إذا كنت تستخدم npm >= 5.2، فيمكنك استخدام npx:
npx agendash2 --db=mongodb://localhost/agendaDb --collection=agendaCollection --port=3001