警告!該項目已合併到主要議程。此 git 儲存庫現已棄用。
現代、安全且可靠的 Agenda 儀表板,具有用 vue.js 編寫的搜尋和分頁功能
require(agendash)
更改為require(agendash2)
@hapi/@hapi
依賴項需要最低 Node.js 版本 12(請參閱 #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 資料庫版本,而不是您的節點包版本!若要檢查資料庫版本,請連接到 mongo 並執行db.version()
。
Agendash2 提供了可在指定路徑使用的 Express 中介軟體,例如,這將使 Agendash2 在您網站的/dash
路徑上可用。注意:不要嘗試像app.use('/', Agendash(agenda))
那樣在根層級掛載 Agendash2 。
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'
} ) ) ;
請注意,如果您使用csurf
等 CSRF 保護中間件,則可能需要將其配置為關閉 Agendash-routes。
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