2015-04-04 34 views
54

Jak mogę wybrać lub zaktualizować wiele rekordów w oriento? Tak jak w przypadku linii wodnej, możemySELECT i UPDATE wiele rekordów w oriento/orientjs i transakcji w linii wodnej

offersModel.update({id:items_ids,status:INACTIVE},{status:ACTIVE}) 

Ale w przypadku operacji na linii wodnej nie jest dostępna. Dlatego chcę użyć:

var db = offersModel.getDB(); 
var trans = db.begin(); 
    trans.update('offers') 
     .set({status:INACTIVE}) 
     .where({id:items_ids,status:ENM.SELLING_STATUS.ACTIVE})//.exec() 
     .then(function(offers){ 
      if (offers.length != items_ids.length) {trans.rollback(); /* send error here*/} 
      else trans.commit(); 
     }) 

Dzięki.

+1

@ Dário nikt nie odpowiedział na to pytanie. Czy to pytanie nie ma znaczenia? – 9me

+1

Witam @ 9me, może ludzie z Oriento nie spędzają tutaj czasu, możesz także spróbować [Oriento gitter channel] (https://gitter.im/codemix/oriento) i [Projekt Oriento] (https: // github .com/codemix/oriento). Odnośnie twojego przykładu: '.where ({id: items_ids, status: ENM.SELLING_STATUS.ACTIVE}). Exec()', nie potrzebujesz '.exec()' przed '.then (/ * .. . * /) '. –

+0

@ Dário Dziękuję za odpowiedź. przepraszam, nie mogę wyjaśnić mojego przypadku użycia. Mój przypadek użycia to 'begin(), następnie zaktualizuj elementy, a następnie **, jeśli brakuje jakiegoś elementu ** rollback() else commit()' Jak mogę wykonać tę transakcję? – 9me

Odpowiedz

0

Próbowaliście śledzić?

db.update(id).set({status:INACTIVE}).scalar() 
+0

Nie próbowałem tego jeszcze ale moje pytanie dotyczy głównie transakcji z więcej niż jedną klasą. – 9me

4

Spróbuj

db.update (ID) .set ({Status: nieaktywny}). Skalar()

+0

Co z wieloma identyfikatorami i transakcjami? W przypadku niepowodzenia, w jaki sposób mogę cofnąć tę transakcję? – 9me