我正在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
}
});
});
}
答案 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问题得到了答案。