警告!该项目已合并到主要议程中。此 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