2017-09-19 2 views
0

글쎄 자동 증분 보안을 위해 RethinkDB에서 해결 방법을 시도하고 있습니다.Rethinkdb, 1 문서에서 값을 가져 와서 다른 것에 값을 +1하십시오.

exports.addCar = function (req, res) { 
    var car= req.body; 
    delete car.id; 
    debug('Adding car: %j', car); 

    <-Code for Adding new cars-> 
    r.table('cars').insert(car).run(self.connection, function(err, result) { 
     if(err) { 
      debug("[ERROR] addCar %s:%s\n%s", err.name, err.msg, err.message); 
      res.send({error: 'An error occurred when adding the new car (' + err.msg + ')'}) 
     } 
     else { 
      if(result && result.inserted === 1) { 
       car.id = result.generated_keys[0]; 
       res.send(car); 
      } 
      else { 
       debug("[ERROR] Failed to create new car record: %j (%j)", car, result); 
       res.send({error: 'An error occurred when adding the new car document'}); 
      } 
     } 
    }); 

    <-Code for AutoIncrement in another document-> 
    r.table("autoincrement").get(1).update({ 
    number: r.row("number").coerceTo("number").add(1).coerceTo("string")}).run(self.connection, function(err, result) { 
     if(err) { 
      debug("[ERROR] findById: %s:%s\n%s", err.name, err.msg, err.message); 
     } 
     else { 
      console.log("New record added"); 
     } 
    }) 
}; 

당신이 볼 수 있듯이, 차량이 저장됩니다 때마다 자동 증가 시퀀스에 대한 다른 문서에서 "번호"행에 +1을 추가 : 이것은 내가 가지고있는 것입니다.

필드를 자동차 행으로 업데이트하려면 다른 문서의 결과를 어떻게 가져올 수 있습니까?

+0

질문에 대한 답변을 얻으려면 답변을 수락하십시오^_ ^ – Suvitruf

답변

0

먼저 실현을 위해 3 가지 작업이 필요합니다.

더 나은 :

1) autoincrement 테이블을 업데이트하고 반환 변경 (update doc 확인) :

당신이 값을 증가 할 것이다 result.changes[0].new_val.number에서
r.table("autoincrement").get(1).update({ 
    number: r.row("number").coerceTo("number").add(1).coerceTo("string")}, { 
      returnChanges: true 
     }).run(self.connection, function(err, result) { 
     if(err) { 
      debug("[ERROR] findById: %s:%s\n%s", err.name, err.msg, err.message); 
     } 
     else { 
      console.log("New record added"); 
     } 
    }) 

.

2) car 개체를이 숫자 (또는 기타)로 업데이트하고 cars 테이블에 결과를 삽입하십시오.