我试图在同一个端点内对2个不同的表进行2次查询。我可以为简单的get查询执行此操作,但不能用于更复杂的更新/替换查询。此外,我不确定在这种情况下如何正确处理错误。
以下是我的尝试:
function upvotePost(req,res,next){
/*query 1*/
r.table('posts').filter(function(post){
return post('id').eq(someId);
}).update(
{"upvotes": r.row("upvotes").add(1)}).run(req._rdbConn)
/*query 2*/
.then(function(){
r.table('users').filter(r.row('login').eq(someUser))
.update({upvotelist: r.row('upvotelist').changeAt(someId,1)})
.run(req._rdbConn).then(function(result){
res.send(JSON.stringify(result));
})
}).error(handleError(res))
.finally(next);
}
现在这会返回连接关闭错误。
答案 0 :(得分:0)
我使用async.parallel
使其工作function upvotePost(req,res,next){
async.parallel([
/*query 1*/
function(){
r.table('posts').filter(function(post){
console.log(req.url);
return post('pid').eq(parseInt(req.params.id));
}).update({"upvotes": r.row("upvotes").add(1)}).run(req._rdbConn).then(function(result){
res.send(JSON.stringify(result));
})
},
/*query 2*/
function(){
r.table('users').filter(r.row('login').eq(req.decoded.login))
.update({upvotelist: r.row('upvotelist').changeAt(parseInt(req.params.id),1)})
.run(req._rdbConn)
}
], null);
}
(缺少错误处理)