2017-07-26 3 views
-1

In einem „afterRemote“ -Haken bestehende i ein bestimmtes Modell finden möge, und ein Attribut ändern:Loopback: PersistedModel.findById() gibt nicht die letzte Instanz. Methoden wie save() nicht

Team.afterRemote('prototype.__create__messages', function(ctx, message, next) { 
    var Message = Team.app.models.message; 

    // Promises.all not required, just for debugging (i removed other code) 
    const promises = Promise.all([ 
     Message.findById(message.id), 
    ]) 

    promises.then(function(result) { 
     console.log("FOUND Message ", result); 

     // here i'd like to change an attribute and save the model back to database 
     console.log(typeof result.save); // will print undefined 
    }); 

Wie kann ich das gefundene Einheit manipulieren und speichern? Save() - Methode ist nicht vorhanden. Alles in allem liefert findById ein reines JSON-Objekt, keine echte PersistedModel-Instanz.

Das Modell wurde wie folgt definiert:

{ "name": "message", "base": "PersistedModel", "strict": false, "idInjection": false, "options": { "validateUpsert": true },

Datenbank ein mongoDB ist.

+0

'findById' muss tatsächlich eine Modellinstanz zurückgeben. http://apidocs.strongloop.com/loopback/#persistedmodel-findbyid Sie sollten wahrscheinlich einen Fehler hier protokollieren: https://github.com/strongloop/loopback/issues/new – Sterex

+0

Ah, sieht aus wie du hast - https://github.com/strongloop/loopback/issues/3521 :) – Sterex

Antwort

1

Lösung:

console.log("FOUND Message ", result[0]); 
console.log(typeof result[0].save); 

Ursachen: Bitte nehmen Sie sich einen Blick von Promise.all Dokumentation

Promise.all asynchron erfüllt ist. In allen Fällen ist die zurückgegebene Zusage erfüllt mit einem Array enthält alle Werte der iterable als Argument übergeben (auch nicht versprechen Werte).

Ihr Fall, result ist ein Array wie [messageObject].

Hoffnung, dass meine Antwort kann :)

2

Loopback Modellfunktionen verspricht Hilfe und Unterstützung. Ihr Code kann wie folgt umgeschrieben werden.

Verwandte Themen