1

データベースに挿入する前にデータを検証する必要があります。 Feathersjsの方法は、フックを使用することです。アクセス許可のグループを挿入する前に、私はユーザー投稿によって提供されるデータの完全性を考慮する必要があります。私の解決策は、ユーザーが提供するデータに関連するすべての権限を見つけることです。リストの長さを比較することで、データが正しいかどうかを判断できます。フックのコードが怒鳴る掲載されていますどのようにfeathersjsフック内の約束を扱う?

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); 
    }; 
}; 

私はinIds配列を移入のための他のパラメータのいくつかの情報を処理する行をコメントしました。また、配列に格納されている情報に関連付けられたオブジェクトの検索を続けました。

thenブロック内のこのブロックは、バックグラウンドで実行されます。 feathersjsコンソール上しかし、データがデータベースに挿入された結果

code execution

が示されています。

feathersjsフック内で実行される約束からデータを返すにはどうすればよいですか?

答えて

2

fnCreateGroupは何も返しません。あなたはreturn permissionModel(hook.app).findAllでなければなりません。あなたはasync/awaitは従って、これは非常に簡単になります8+ノードを使用している場合は別の方法として:

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

を私はノード8のインストールに私のノード6を更新しました。ありがとう –

関連する問題