全晚,
我希望这是我犯了一个学校男生的错误。尝试使用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
答案 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解决了这个问题。