2016-04-25 66 views
-1

我正在构建像StackOwerflow这样的论坛。我的技术堆栈是NodeJS/MongoDB/Mongoose。我的问题是我不明白如何在添加新答案时对问题帖子进行原子更新。什么是最好的方式来增加答案计数为后在SO里?

看我的帖子集合:

[{ 
    id: 1, 
    title: 'How to learn JavaScript' 
    body: 'Subject', 
    answers_count: 2 
}, 
{ 
    id: 2, 
    parentId: 1, 
    body: 'Read book' 
}, 
{ 
    id: 3, 
    parentId: 1, 
    body: 'Watch YouTube' 
}] 

当我添加或删除新的答案,我需要在parant后递增answers_count。什么是进行原子更新的最佳方式?

谢谢。

+0

你有没有插入原子和两阶段提交MongoDB的文档?这可能会帮助你。 –

回答

0

说你的问题模型命名为Question并回答模型Answer。然后你就可以像这样的更新:

Answer.create({ 
    //the answer object you have 
}, 
function(err,res){ 
    if(err) 
     console.log(err); 
    else { 
     Question.findOneAndUpdate({ 
      id: //answer's parent id 
     }, 
     { 
      $inc:{ answer_count:1 } 
     }, 
     function(err,res){ 
      if(err) 
       console.log(err); 
      else 
       console.log("Answer count incremented. The updated question is "+res); 
     }) 
    } 
} 
+0

感谢您的回复。但你的解决方案不是原子的 – Erik

+0

@Erik你是什么意思的原子? – ayushgp

+0

如果你的第二个查询'Question.findOneAndUpdate',那么第一个'Answer.create'应该是回滚 – Erik

相关问题