Node.js Mongodb反向匹配API端点路径
试图建立一个webhook系统,用户可以通过提供一个方法和一个端点来监听我的express服务器的任何方法(例如Node.js Mongodb反向匹配API端点路径,node.js,regex,mongodb,typescript,Node.js,Regex,Mongodb,Typescript,试图建立一个webhook系统,用户可以通过提供一个方法和一个端点来监听我的express服务器的任何方法(例如PUT/movies/*)。这会将编辑的电影发送到用户的回调url 我在这里面临的挑战是: 不强迫用户编写一个完整的正则表达式(像bash通配符之类的东西是理想的,或者像nodepath-to-regexplibrary那样工作) 在调用端点时检索与该端点匹配的所有钩子 我真的不知道如何处理第一点,但是我能够使用这里提供的解决方案检索我的Webhook private静态异步getWe
PUT/movies/*
)。这会将编辑的电影发送到用户的回调url
我在这里面临的挑战是:
path-to-regexp
library那样工作)private静态异步getWebhooks(端点:string,方法:string):Promise{
return wait MongoDb.Instance.Models.Webhook.find({
$where:`${endpoint}.match(this.endpoint)`,
方法:方法,,
});
}
这并不像预期的那样有效。提供了
GET/movies/*
这与GET/movies
和GET/movies/:movieId
端点匹配,但它应该只与后者匹配。好的,我只是缺少睡眠,我用了错误的方法
一种解决方案是在注册webhook时,只需在用户提供的端点上调用regexp的路径
方法,这样一个真正的表达式将存储在端点旁边,但对用户隐藏
import*作为pathToRegexp从'path to regexp'导入;
公共异步创建(webhook:IWebhook):承诺{
让pattern=pathToRegexp(webhook.endpoint.original,[]);
webhook.endpoint.pattern=模式;
const createdWebhook=wait MongoDb.Instance.Models.Webhook.create(Webhook);
这是setStatus(201);
返回createdWebhook;
}
好吧,我只是缺少睡眠,我的方法不对
一种解决方案是在注册webhook时,只需在用户提供的端点上调用regexp的路径
方法,这样一个真正的表达式将存储在端点旁边,但对用户隐藏
import*作为pathToRegexp从'path to regexp'导入;
公共异步创建(webhook:IWebhook):承诺{
让pattern=pathToRegexp(webhook.endpoint.original,[]);
webhook.endpoint.pattern=模式;
const createdWebhook=wait MongoDb.Instance.Models.Webhook.create(Webhook);
这是setStatus(201);
返回createdWebhook;
}