【发布时间】:2015-06-21 23:41:52
【问题描述】:
我的设置与这个问题中的人非常相似: How do I update a list data_relation in Python Eve 具有用户资源和列表类型的朋友子资源。
users = {
…
‘friends’: {
'type': 'list’,
'schema': {
'type': 'objectid’,
'data_relation': {
'resource': 'users’
}
}
}
},
但是,当我尝试向好友列表中添加新值时,列表中的其他值会被新值替换。如何将单个值添加到列表中并保留旧值?
GET /users/5522987f893e3902048c55ff
{
"_updated": "Wed, 15 Apr 2015 17:22:07 GMT",
"_created": "Mon, 06 Apr 2015 14:30:23 GMT",
"_id": "5522987f893e3902048c55ff",
"friends": [
"552e9eb0893e391063045edc"
]
}
PATCH /users/5522987f893e3902048c55ff
{"friends": [“550f288d893e390204b0a5ac”]}
RESPONSE:
{
"_updated": "Wed, 15 Apr 2015 19:38:06 GMT",
"_created": "Mon, 06 Apr 2015 14:30:23 GMT",
"_status": "OK",
"_id": "5522987f893e3902048c55ff"
}
GET /users/5522987f893e3902048c55ff
{
"_updated": "Wed, 15 Apr 2015 19:38:06 GMT",
"_created": "Mon, 06 Apr 2015 14:30:23 GMT",
"_id": "5522987f893e3902048c55ff",
"friends": [
"550f288d893e390204b0a5ac"
]
}
我也尝试过 PUT,但它也将列表替换为新值。
编辑: 我刚刚尝试使用 POST。
POST /users/5522987f893e3902048c55ff/friends
{"552e9eb0893e391063045edc"}
RESPONSE:
{
"_status": "ERR",
"_error": {
"message": "The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.",
"code": 404
}
}
与
POST /users/5522987f893e3902048c55ff
{"friends": ["552e9eb0893e391063045edc"]}
RESPONSE:
{
"_status": "ERR",
"_error": {
"message": "The method is not allowed for the requested URL.",
"code": 405
}
}
【问题讨论】:
-
您应该使用 POST 添加新元素...
-
切勿使用 MS Word 编辑您的程序或数据。您有一些自动更正的省略号和引号。
-
感谢您的快速回复!在尝试发布新朋友后,我刚刚编辑了我的问题。
-
@AmyEubanks 我有同样的问题。你是如何解决这个问题的,因为它在 eve 中不受本机支持。
-
@CraigH 我刚刚发布了我的解决方法。