回环查找,然后通过属性更新或按ID删除。

7

我一直在寻找Loopback中persistedModel的一些静态方法的使用示例。

https://apidocs.strongloop.com/loopback/#persistedmodel-prototype-updateattribute

它只是说:

persistedModel.updateAttributes(data, callback)

但是我该如何选择我想要更新的记录呢?这对我来说不起作用。

var order = Order.setId('whateverrecordId');
order.updateAttributes({name:'new name'},callback)

喜欢loopback.. 但是他们的文档太烂了.. :(


1
难道不应该是 order.updateAttributes({name:'new name'},callback) 吗? - Maria Ines Parnisari
2个回答

3
你可以在像AfterSave这样的事件监听器中使用它们。
例如:
Model.observe('after save', function(ctx, next) {
   ctx.instance.updateAttribute(fieldname:'new value');
   next();
});

3

1- 你的做法是正确的,但我不建议使用这种方法。这种方法通常用于实例方法和一般用于更新所有集合的字段,例如日期,因此您不需要ID。

但是,您可以尝试创建一个包含要更新数据的数组,并且也包含ID,然后进行比较以填充您拥有的ID的数据。(在#dosomething中)

order.find().then(function(orders) {

          orders.forEach(function(element) {

            order.setId(element.id); 
            #DoSomething
            order.updateAttribute({new: data}, function(err, instance) {

              console.log(instance);
            })
          });
        })

2-你可以使用updateAll来更新一个或多个属性。

PersistedModel.updateAll([where], data, callback)

var Updates = [{id : 1, name: name1}, ...]
Updates.forEach(function(element) {
order.updateAll({id : element.id}, {name :element.name}, function(err, count) {
      if (err) {
        console.error(err);
      }
      console.log(count); // number of data updated
    })
 })

1
实际上,updateAll 用于更新多个 ,而不是多个 属性。要更新多个属性,请使用 updateAttributes,要仅更新一个属性,请使用 updateAttribute源链接 - Vinícius Queiroz

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