Loopback push array

¿Cómo puedo hacer para crear un remoteMethod personalizado que actualice / empuje, no invalide , una propiedad que es una array ? Básicamente, push datos a una propiedad de matriz de un modelo.

No puedo encontrar ejemplos claros de esto en la documentación, a excepción de un método auxiliar .add() , pero eso requiere una embedsOne o alguna otra relación.

Pero, ¿qué sucede si tengo un solo Model en toda la aplicación y solo deseo push algunos datos a una id ? Así que terminamos con un punto final como:

POST /Thing/{id}/pushData

Y el cuerpo para POST sería:

  { id: "foo", data: "bar" } 

(O preferiblemente sin id , e autoInserted el id autoInserted , ya que es una matriz, y no necesito un ID para cada elemento, la parte de data debe poder buscarse con filtros / dónde)

Hasta ahora tengo:

  Thing.remoteMethod ( 'pushData', { isStatic: false, http: {path: '/pushData', verb: 'post'}, accepts: [ { arg: 'data', type: 'array', http: { source: 'body' } } ], returns: {arg: 'put', type: 'string'}, description: 'push some Data' } ); Thing.prototype.pushData = function(data, cb) { data.forEach(function (result) { // ?? }); cb(null, data) }; 

Y, por lo que puedo ver, los puntos finales predeterminados solo permiten que se agreguen instancias individuales, pero quiero actualizar en forma masiva.

Has hecho tu método no estático, lo cual es bueno.

Ahora, si su propiedad de matriz se llama MyArray , intentaría algo como:

  Thing.remoteMethod ( 'pushData', { isStatic: false, http: {path: '/pushData', verb: 'post'}, accepts: [ { arg: 'data', type: 'array', http: { source: 'body' } } ], returns: {arg: 'put', type: 'string'}, description: 'push some Data' } ); Thing.prototype.pushData = function(data, cb) { thingInstance = this; data.forEach(function (result) { thingInstance.MyArray.push(result.data); }); cb(null, data) }; 

Debido a que su método remoto no es estático, debería poder acceder a la instancia utilizando this . Tengo una duda de si puede o no acceder directamente a las propiedades de esa manera al escribir this.someProperty , por favor, inténtelo y hágame saber si eso no funciona.

Luego, para crear en masa, simplemente realice una solicitud POST estándar a su control remoto

 POST /Thing/{id}/pushData 

solo escribe tu JSON como este

 { { data: "bar" }, { data: "foo" }, //etc } 

Esto debería agregar dos elementos a la propiedad de matriz.

Déjame saber si esto es útil