【问题标题】:meteor restivus endpoints configurationmeteor restivus 端点配置
【发布时间】:2015-02-18 21:35:28
【问题描述】:

所以我有流星运行,我希望公开一个 REST API。我决定选择restivus,因为它对我来说似乎更干净、更灵活。

所以我的基本代码是:

if (Meteor.isServer) {
  Meteor.startup(function () {

    // Sensors = new Meteor.Collection('sensor');

    Restivus.configure({
      useAuth: false,
      prettyJson: false
    });
    Restivus.addCollection("sensor", {
      defaultOptions: {},
    });

  });
}

我可以使用以下方法很好地查询它:

$ curl -X GET http://localhost:3000/api/sensor
{"status":"success","data":[{"_id":{"_str":"00000000236668afaf952dee"},"ts":1424246899,"temp":28,"humidity":33}]}

hmm...所以我手动输入的“_id”(而不是让 mongo 为我设置)在输出中看起来有点奇怪;不过好吧,我猜是ObjectId()。但是,当我使用 GET 时,它会失败:

$ curl -X GET http://localhost:3000/api/sensor/00000000236668afaf952dee

{"status":"fail","message":"项目未找到"}

我做错了什么?

【问题讨论】:

  • 另外,文档中有一个错误,现已修复;所以你声明为defaultOptions: {} 的对象实际上应该命名为routeOptions,这并不重要,因为你实际上没有设置任何选项。只是想指出这一点,以免它在其他地方咬你。

标签: mongodb api rest http meteor


【解决方案1】:

看起来 _id 实际上是一个对象{"_str":"0000....52dee"},而不是简单的字符串"0000....52dee"。问题很可能出在您保存 _id 的代码中。它应该看起来像这样{"_id" : "rdSRTTz5RL5JjQy3G"}

【讨论】:

  • 是的,我删除了 mongo 中的文档并直接通过 REST api 创建了它,现在很好。有趣的是,我实际上使用 ObjectId() 在 mongo 中创建了文档 - 这不推荐吗?
  • 我通常让 MongoDB 在插入时分配一个。有时,我使用库来生成 UUID 字符串。请您接受答案吗?
猜你喜欢
  • 1970-01-01
  • 2015-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-21
  • 2013-05-29
  • 1970-01-01
相关资源
最近更新 更多