1

Ich möchte Daten validieren, bevor Sie in die Datenbank einfügen. Feathersjs Weg ist mit Haken. Vor dem Einfügen einer Berechtigungsgruppe muss ich die Integrität der vom Benutzer bereitgestellten Daten berücksichtigen. Meine Lösung besteht darin, alle Berechtigungen zu finden, die den vom Benutzer bereitgestellten Daten zugeordnet sind. Durch Vergleichen der Längen der Listen kann ich feststellen, ob die Daten richtig sind. Der Code des Hakens unten geschrieben:Wie man ein Versprechen in einem feathersjs Haken behandelt?

const permissionModel = require('./../../models/user-group.model'); 

module.exports = function (options = {}) { 
    return function usergroupBefore(hook) { 
    function fnCreateGroup(data, params) { 
     let inIds = []; 
     // the code in this block is for populating the inIds array 

     if (inIds.length === 0) { 
     throw Error('You must provide the permission List'); 
     } 
     //now the use of a sequalize promise for searching a list of 
     // objects associated to the above list 
     permissionModel(hook.app).findAll({ 
     where: { 
      id: { 
      $in: inIds 
      } 
     } 
     }).then(function (plist) { 
     if (plist.length !== inIds.length) { 
      throw Error('You must provide the permission List'); 
     } else { 
      hook.data.inIds = inIds; 
      return Promise.resolve(hook); 
     } 
     }, function (err) { 
     throw err; 
     }); 
    } 

    return fnCreateGroup(hook.data); 
    }; 
}; 

I die Linien kommentiert, die einige Informationen anderer Parameter für bevölkern die inIds Array verarbeiten. Ich habe auch eine Suche nach den Objekten verwendet, die mit den in dem Array gespeicherten Informationen verknüpft sind.

Dieser Block innerhalb des then Blocks wird im Hintergrund ausgeführt.

code execution

jedoch auf den feathersjs wird Konsole die Ergebnisse gezeigt, Daten in die Datenbank eingefügt wurde.

Wie kann ich Daten von einem Versprechen, das in einem feathersjs-Hook ausgeführt wurde, zurückgeben?

Antwort

2

Ihr fnCreateGroup gibt nichts zurück. Sie müssen return permissionModel(hook.app).findAll. Alternativ, wenn Sie Knoten verwenden 8+ async/await dies viel leichter machen zu folgen:

const permissionModel = require('./../../models/user-group.model'); 

module.exports = function (options = {}) { 
    return async function usergroupBefore(hook) { 
    let inIds = []; 
    // the code in this block is for populating the inIds array 

    if (inIds.length === 0) { 
     throw Error('You must provide the permission List'); 
    } 

    //now the use of a sequalize promise for searching a list of 
    // objects associated to the above list 
    const plist = await permissionModel(hook.app).findAll({ 
     where: { 
     id: { 
      $in: inIds 
     } 
     } 
    }); 

    if (plist.length !== inIds.length) { 
     throw Error('You must provide the permission List'); 
    } else { 
     hook.data.inIds = inIds; 
    } 

    return hook; 
    }; 
}; 
+0

ich meinen Knoten 6 zum Knoten 8-Installation zu aktualisieren. Vielen Dank –

Verwandte Themen