获得 URL 的一部分

getting some part of URL

我正在尝试获取此 URL (在服务器端)的结尾部分:

http://localhost:3000/insAds/D79htZY8DQ3YmcscE

我的意思是我想得到这个字符串:

D79htZY8DQ3YmcscE

有个类似的问题:How to get the query parameters in Iron-router?

但没有一个答案对我有帮助!因为我在 URL.

中没有查询参数

我知道这些代码为我提供了我想要的字符串:

this.params.id

Router.current().params.id

但这些代码仅适用于客户端!我想在服务器端获取该字符串!

最后我尝试获取该字符串并在此处使用:

Ads.before.insert(function(userId, doc) {
    //console.log(this.params.id);
    doc._categoryId = this.params.id;
    doc.createdAt = new Date();
    doc.createdBy = Meteor.userId();
});

您可以像这样使用 Router.current().paramsthis.params

Router.route('/insAds/:id', function () {
    console.log(this.params.id); // this should log D79htZY8DQ3YmcscE in console
});

查看 iron router documentation

的快速入门部分中的第三个示例

编辑: 根据我们的聊天,

你的钩子是

Ads.before.insert(function(userId, doc) {
    //console.log(this.params.id);
    doc._categoryId = this.params.id;
    doc.createdAt = new Date();
    doc.createdBy = Meteor.userId();
});

改为

Ads.before.insert(function(userId, doc) {
    doc.createdAt = new Date();
    doc.createdBy = Meteor.userId();
});

然后像这样在服务器中定义 meteor 方法

Meteor.methods({
    'myInsertMethod': function (id) {
         Ads.insert({
             _categoryId: id
         });
    }
});

像这样从客户端调用它

Meteor.call('myInsertMethod', Router.params().id, function (err, res) { 
    console.log (err, res);
});