在Oriento/OrientJS中选择和更新多个记录以及在Waterline中使用事务。

54

我该如何在oriento中选择或更新多条记录?就像在waterline中我们可以做到的一样

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

但是,在水平面事务不可用。因此我想使用:

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();
         })

谢谢。


1
@Dário 没有人回答这个问题。这个问题不重要吗? - 9me
1
嗨@9me,或许Oriento的人们不常来这里,你也可以试试 Oriento gitter 频道Oriento 项目。关于你的例子:.where({id:items_ids,status:ENM.SELLING_STATUS.ACTIVE}).exec(),在 .then(/*...*/) 前面是不需要 .exec() 的。 - Dário
@Dário感谢您的回复。很抱歉我无法解释我的用例。我的用例是 begin() 然后更新项目,然后 **如果有任何项目丢失** 回滚() 否则提交()。我该如何执行此事务? - 9me
@9me:你修好了吗?你应该使用scalar()函数,就像这个例子中一样。 - Alexis N-o
2个回答

4

试一下这个

使用db.update(id).set({status:INACTIVE}).scalar()进行更新。


多个ID和事务怎么办?如果失败了,我该如何撤销这个事务? - 9me

0
你尝试过以下方法吗?
db.update(id).set({status:INACTIVE}).scalar()

我还没有尝试过,但我的问题主要与基于多个类的事务相关。 - 9me

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接