环回查找然后更新属性或按 id 删除

Loopback Find then update attribute or delete by id

一直在尝试查找 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)

爱环回..但他们的医生,糟透了..:(

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

你可以在像 AfterSave 这样的事件监听器上使用它们

示例:

Model.observe('after save', function(ctx, next) {
   ctx.instance.updateAttribute(fieldname:'new value');
   next();
});