meteor restivus如何读取多个queryParams

时间:2015-03-04 16:15:15

标签: meteor

我正在Meteor中使用Restivus构建API。

在自定义路由中,我希望像queryParams一样有多个值(例如value1和value2):

...domain/api/update?key=1234&value1=10

如何在终端功能中获取它们?

当我尝试这个时,我得到了未定义:

 var query = this.queryParams.key // result: 1234
 var value1 = this.queryParams.value1 // result: undefined

更新 这是我新的新代码,结果相同。 使用标准的Meteor项目。 Meteor版本1.0.3.2

// Create collection
Posts = new Mongo.Collection("posts");

if (Meteor.isServer) {

  Meteor.startup(function () {
    // RESTIVUS
    // Global configuration
    Restivus.configure({
      useAuth: false,
      prettyJson: true
    });


    // Given the url: "/posts?key=1234&value1=10"
    Restivus.addRoute('posts', {
      get: function () {
        var key = this.queryParams.key;
        var value1 = this.queryParams.value1;
        console.log("key: " + key); // result: 1234
        console.log("value1: " + value1); // result: undefined
      }
    });
  });
}

1 个答案:

答案 0 :(得分:4)

这是问题的解决方案。取自这里: https://github.com/kahmali/meteor-restivus/issues/16

你正在使用curl进行测试,对吗?很明显(并且不会因为不知道这一点而感到难过,因为我也不知道),& symbol表示前一个命令将在后台运行,因此一旦curl命令到达&amp ;,则查询参数被截断。对于第二个查询参数。您所要做的就是将URL包装在引号中,瞧!请尝试使用此命令:

curl "http://testivus.meteor.com/api/posts?key=1234&value1=10"

那应该有用。因此,如果您刚刚将该URL打入浏览器或使用了更高级的高级REST客户端,您将看到定义了额外的查询参数。我从StackOverflow问题得到了答案。