例如,我想将用户分数发送到数据库,而不是返回典型状态,id和rev我希望它返回用户排名。我猜这不可能,但我想问。
答案 0 :(得分:1)
对HTTP POST / PUT的响应应该只用于帮助您确认它是否成功。
我甚至很难看到如何获得couchdb视图返回的用户的等级,除非您检索所有用户的数据并计算出用户的位置。
此用例...
......非常有点像经典案例,你可能想要使用关系数据库。
答案 1 :(得分:0)
如果可以从您要使用http请求更改的文档中计算结果,则可以使用更新处理程序PUT
更改文档并return
该结果:强>
// 'myhandler' update function
function(doc, req) {
// create a shorthand for json reponses
var json_reponse = function(obj, code) {
return {
headers: { 'Content-Type': 'application/json' }
, body: JSON.stringify(obj)
, code: code
}
}
// assume the incoming body is json and parse it
// needs proper error handling still
var body = JSON.parse(req.body)
// doc is the user document we are patching
// return an error if it isn't there
if(!doc)
return [null, json_response({error: 'user document not found'}, 404)]
// return an error if new_score is missing from body
if(!body.new_score)
return [null, json_response({error: 'missing property new_score'}, 400)
// now patch the user doc
doc.score = body.new_score
// calculate the new rank depending on your own method
var my_rank = my_rank_function(doc.score, Math.PI, 'bananarama')
return [doc, json_response({success: true, rank: my_rank}, 200)
}
现在PUT
新数据接收新排名:
request(
{ method: 'PUT'
, url: httptp://127.0.0.1:5984/mydb/_design/myddoc/_update/myhandler/myuserdocid
, json: {"new_score": 42}
, headers: { "Content-Type: application/json" }
}
, function(err, response, body) {
console.log("user's new rank:", JSON.parse(body).rank)
}
)
应打印user's new rank: LEVEL 11 EIGHTIES GIRL GROUP LEADER
nb:我不在工作,所以不能确认代码有效,但是你应该把它搞定......