2017-12-08 8 views
1

feathers generate serviceコマンドを使用して作成したfeathersjsサービスがあります。私はcreateメソッドの定義をオーバーライドしたいと思います。feathersjsデフォルトサービスメソッドをオーバーライドする方法

これは私のサービスクラス

/* eslint-disable no-unused-vars */ 
// Initializes the `userGroup` service on path `/usergroup` 
const createService = require('feathers-sequelize'); 
const createModel = require('../../models/user-group.model'); 
const hooks = require('./user-group.hooks'); 
const filters = require('./user-group.filters'); 
const async = require('async'); 

module.exports = function() { 
    const app = this; 
    const Model = createModel(app); 
    const paginate = app.get('paginate'); 

    const options = { 
    name: 'usergroup', 
    Model, 
    paginate, 
    create: fnCreateGroup // documentation says this allows you to create your own create method 
    }; 

    function fnCreateGroup(data, params) { 
    let json = { 
     done: false 
    }; 
    let permissionIds = Object.keys(data.permissionList), inIds = []; 
    for (let i in permissionIds) { 
     if (data.permissionList[permissionIds[i]]) { 
     inIds.push(parseInt(permissionIds[i])); 
     } 
    } 
    if (inIds.length === 0) { 
     json.cause = 'You must provide the permission List'; 
     return Promise.resolve(json); 
    } 
    async.parallel([ 
     function (cb) { 
     Model.create({ 
      groupName: data.groupName 
     }).then(function (ug) { 
      cb(null, ug); 
     }, function (err) { 
      cb(err, null); 
     }); 
     }, 
     function (cb) { 
     app.models.permissions.findAll({ 
      where: { 
      id: { 
       $in: inIds 
      } 
      } 
     }).then(function (plist) { 
      cb(null, plist); 
     }); 
     } 
    ] 
     , function (err, results) { 
     if (typeof err !== 'undefined' && err !== null) { 
     json.err = err; 
     return Promise.resolve(json); 
     } else { 
     let permissions = results[1], group = results[0]; 
     for (let i = 0; i < permissions.length; i++) { 
      group.addPermission(permissions[i]); 
     } 
     json.done = true; 
     json.id = group.id; 
     return Promise.resolve(json); 
     } 
    }); 
    } 

    // Initialize our service with any options it requires 
    app.use('/usergroup', createService(options)); 

    // Get our initialized service so that we can register hooks and filters 
    let service = app.service('usergroup'); 

    service.hooks(hooks); 

    if (service.filter) { 
    service.filter(filters); 
    } 
}; 

作成方法のテストが元のメソッドではなく私の結果を示しています。

どうすればよいですか?

答えて

1

既存のサービスを無効にして拡張する方法は、database adapter common APIに記載されています。あなたはhook.resultを設定することにより、hooksを使用するか、既存のES6クラスを拡張することができます:私はこのコードを置くことができ

const Service = require('feathers-sequelize').Service; 

class MyService extends Service { 
    create(data, params) { 
    data.created_at = new Date(); 

    return super.create(data, params); 
    } 
} 

app.use('/todos', new MyService({ 
    paginate: { 
    default: 2, 
    max: 4 
    } 
})); 
+0

どのファイルでは?サービスファイルでコマンドが作成されましたか? –

+0

または、サービスを別のファイルに作成してください。 – Daff

関連する問題