Warum holen Sie das Attribut, das gar nicht existiert? Sie sollten die Spalten abrufen, die vorhanden sind. Um Daten, die nicht in der Modellspezifikation enthalten sind, zu senden, sollten Sie einfach einen Objekttyp als Nutzlast senden, und Sie können dann alles darin nach Belieben bearbeiten.
Sie sollten eine Remote-Methode einrichten, um die gewünschten Daten zu akzeptieren, und dann mit den integrierten CRUD-Methoden auf dem Server in die Datenbank schreiben. Versuchen Sie nicht, die CRUD-Methoden zu verwenden, um Geisterfelder zu bearbeiten. Es ist nicht nur schwierig, darüber nachzudenken, es könnte auch Leute erwischen, die neu in der Codebasis sind.
MODEL.remoteMethod('customRemoteMethodName',
{
accepts: [
{
arg: 'data', type: 'object'
}
],
returns: {
arg: 'result',
type: 'object'
}
}
);
Die data
arg kann oben enthalten, was auch immer Sie möchten, und innerhalb der Remote-Methode können Sie manipulieren und die Daten überprüfen, bevor an die DB zu schreiben:
MODEL.customRemoteMethodName = function(payload, cb) {
// modify payload.datas into processed_datas_1 and processed_datas_2
// processData() defined elsewhere or imported
let processed = processData(payload.datas);
let modelData = {
processed_datas_1: processed.data_1,
processed_datas_2: processed.data_2
//... other required model fields
};
// suggest validation here
// use built in CRUD with processed data
//
MODEL.create(modelData, function(err, modelInstance) {
if(err) {return cb(err);}
// call remote method callback to return result to client
cb(null, modelInstance);
});
};
Die beobachten Haken sein kann manchmal nützlich, aber es ist immer eine gute Idee, zweimal über die "magische" Verarbeitung nachzudenken, die sie zur Verfügung stellen können. Diese Arten von "Nebenwirkungen", die nicht mit den tatsächlichen Modelldefinitionen zusammenhängen, können zu Problemen bei der Dokumentation und Codierung in einem Team mit neuen Mitgliedern führen.
Durch eine benutzerdefinierte Remote-Methode verwenden, den Sie hinzufügen, Code-as-Dokumentation (Name der Remote-Methode so etwas wie MODEL.processAndCreate
) und zugleich alle Datenmanipulation direkt vor der Entwickler setzen.
TY für den Vorschlag, aber Loopback ist nicht die einzige API, die ich mit meinem mobilen Client verwende, habe ich einen Server-Wrapper in meinem mobilen Client, der die Server API wählen kann, so die Methoden über die verschiedenen APIs müssen ähnlich bleiben. –