Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Mongodb反向匹配API端点路径_Node.js_Regex_Mongodb_Typescript - Fatal编程技术网

Node.js Mongodb反向匹配API端点路径

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

试图建立一个webhook系统,用户可以通过提供一个方法和一个端点来监听我的express服务器的任何方法(例如
PUT/movies/*
)。这会将编辑的电影发送到用户的回调url

我在这里面临的挑战是:

  • 不强迫用户编写一个完整的正则表达式(像bash通配符之类的东西是理想的,或者像node
    path-to-regexp
    library那样工作)
  • 在调用端点时检索与该端点匹配的所有钩子
  • 我真的不知道如何处理第一点,但是我能够使用这里提供的解决方案检索我的Webhook

    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;
    }