2016-12-13 9 views
1

Hier ist ein Ausschnitt des Modells, das ich erstellt habe. Ich möchte, dass die ID-Eigenschaft IMMER automatisch über die UUID-Standardfunktion generiert wird. Wenn sie jedoch sogar zu hidden hinzugefügt wird, kann die ID-Eigenschaft vom Benutzer entschieden werden, wenn sie diese in die Post-Erstellungsmethode übergibt.Strongloop UUID

Anders als die Methode Hooks ODER Operation Hooks verwenden, um den Wert immer zu überschreiben gibt es einen anderen Loopback-Ansatz oder Flag (ich habe auch die foreId -Eigenschaft versucht), um sicherzustellen, dass die ID immer eine UUID ist, auch wenn der Benutzer bereitstellt ein Wert? Wenn nicht dann für meinen Fall, "defaultFn": "uuid" völlig sinnlos, wenn ich es immer überschreibe.

{ 
    "name": "Account", 
    "base": "PersistedModel", 
    "strict": true, 
    "idInjection": false, 
    "options": { 
    "validateUpsert": true 
    }, 
    "properties": { 
    "id": { 
     "id": true, 
     "required": true, 
     "type": "string", 
     "defaultFn": "uuid" 
    }, 
    }, 
    "validations": [], 
    "relations": {}, 
    "acls": [], 
    "methods": {} 
} 
+0

Don Ich weiß nicht, warum du runtergerutscht wurdest, weil das eine absolut gültige Frage ist (und ich etwas dank ihr entdeckt habe) – Overdrivr

+0

@Overdrive mich entweder da ich nirgendwo eine Antwort sehen konnte: p –

Antwort

2

Aus irgendeinem Grund kann die ID von dem Benutzer durch die api REST neu definiert werden und ist nicht geschützt, wenn idInjection: false ist und eine individuelle ID-Eigenschaft verwenden.

ich ein Ticket auf Github geöffnet werden, wenn es nicht bereits getan hat, in der Zwischenzeit können Sie es leicht beheben ein before saveoperation hook

In Account.js verwenden, mit dem uuid Paket

const uuidV4 = require('uuid/v4'); 
module.exports = function(Account) { 
    Account.observe('before save', function(ctx, cb){ 
    if (ctx.instance) { 
     ctx.instance.id = uuidV4(); 
    } else { 
     ctx.data.id = uuidV4(); 
    } 
    cb(); 
    }); 
}; 
+1

Als Antwort darauf zu wählen, da dies der war Ich habe den gleichen Ansatz gewählt. Es scheint nur albern, Sie können eine defaultFn angeben, aber ein Benutzer kann den Wert jederzeit überschreiben. –

+0

Nun, da ist die 'forceId'-Eigenschaft, aber es scheint überhaupt nicht zu funktionieren. Das Ticket ist [hier] geöffnet (https://github.com/strongloop/loopback/issues/3029#issuecomment-267143569). – Overdrivr

Verwandte Themen