FortuneJS入门

时间:2015-10-21 15:46:42

标签: node.js json-api

全晚,

我希望这是我犯了一个学校男生的错误。尝试使用fortuneJS“开始”但在尝试创建新资源时遇到问题。

所以,我按照他们homepage的描述设置了财富。我选择使用他们的JSON API插件,再按照他们的回购设置。

我正在使用Postman测试我创建的服务器,我可以创建一个'用户'资源,以下内容没有问题:

{
  "data": {
    "type": "user",
    "attributes": {
      "name": "Andrew"
    }
  }
}

工作正常,我收到如下回应:

{
  "data": {
    "type": "users",
    "id": "37446bbc",
    "attributes": {
      "name": "Andrew"
    },
    "relationships": {
      "posts": {
        "links": {
          "self": "http://localhost:1337/users/37446bbc/relationships/posts",
          "related": "http://localhost:1337/users/37446bbc/posts"
        },
        "data": []
      }
    },
    "links": {
      "self": "http://localhost:1337/users/37446bbc"
    }
  }
}

现在,我需要尝试创建'post'资源。遵循JSON API规范我发布了以下有​​效负载:

{
  "data": {
    "type": "posts",
    "attributes": {
      "message": "This is my first post"
    },
    "relationships": {
      "author": {
        "data": { "type": "users", "id": "37446bbc" }
      }
    }
  }
}

我从中回来的是:

{
  "errors": [
    {
      "title": "Error",
      "detail": "An internal server error occurred."
    }
  ]
}

我通过在node_modules / fortune / dist / lib / dispatch / index.js的第118行放置'error'的控制台日志来调试,这显示了这个错误:

[TypeError: Cannot set property 'user' of undefined]

我们非常感谢您提供的任何建议或指导。希望这只是我!

我正在使用babel-node app.js来运行此功能。为了节省您的时间,我已将代码抛到public repo

2 个答案:

答案 0 :(得分:0)

似乎需要将实际的错误消息转发给客户端。您可以通过将catch附加到HTTP侦听器来执行此操作:

const server = http.createServer((request, response) =>
  fortune.net.http(store)(request, response)
  .catch(error => console.log(error.stack)))

我在重新创建步骤时发现的是:

Error: A related record for the field "author" was not found.

但是,由于它是通用Error而不是Fortune在内部使用的类型错误,因此它对客户端是隐藏的。

因此,通过为作者id设置正确的值,它能够成功创建具有该关联的记录。

将修补未来版本,以便显示此信息性错误消息。

答案 1 :(得分:0)

最初发布的问题工作正常,节点版本导致错误。升级到v4.2.1解决了这个问题。