2016-03-28 11 views
2

アソシエーションを設定するときに、Sequelize(sequelizejs.com)を使ってオブジェクトに魔法のように作成されたすべての関数を出力する方法はありますか?オブジェクト上の関数のリストを並べ替える

例えば、私は、Userモデルを持っていると私は今、私はcreateFriend機能があるためbelongsToMany関係可能である

User.create({ 
    name: Faker.name.findName() 
}).then((user) => { 
    user.createFriend({ 
     name: Faker.name.findName() 
    }) 
}); 

を呼び出すことができます

User.belongsToMany(User, { as: 'Friends', through: 'UserFriend' });

を設定します。

User(またはuser)で作成されたすべての関数を出力する方法はありますか?

時には、私がオブジェクトに呼び出すことができるものが実際にはっきりしていないことがあります。何らかの方法で出力できれば助けになります。

+0

は、あなただけの約束の成就コールバックの内側にそれをデバッグすることができませんか? –

+0

あなたはユーザーオブジェクトをコンソール化することを意味しますか?私はそこにcreateFriendへの参照を見つけることができないので、(私が期待するように)魔法の機能であると思われます。 –

+0

これはデバッグ方法がわかりませんが、ノードインスペクタ機能の本体を見ることができます –

答えて

5

私はすべての魔法の機能を簡単にログアウトする方法を見つけることができませんでした。しかし、ソースコードを見れば、それぞれのタイプの関係のためにアクセサリの下にあります。

sequelize/lib/associations/ - https://github.com/sequelize/sequelize/tree/master/lib/associations

が所属対多:

get: 'get' + plural, 
set: 'set' + plural, 
addMultiple: 'add' + plural, 
add: 'add' + singular, 
create: 'create' + singular, 
remove: 'remove' + singular, 
removeMultiple: 'remove' + plural, 
hasSingle: 'has' + singular, 
hasAll: 'has' + plural, 
count: 'count' + plural 

が-に属し:

get: 'get' + singular, 
set: 'set' + singular, 
create: 'create' + singular 

HAS-多く:

get: 'get' + plural, 
set: 'set' + plural, 
addMultiple: 'add' + plural, 
add: 'add' + singular, 
create: 'create' + singular, 
remove: 'remove' + singular, 
removeMultiple: 'remove' + plural, 
hasSingle: 'has' + singular, 
hasAll: 'has' + plural, 
count: 'count' + plural 

HAS-ワン:

get: 'get' + singular, 
set: 'set' + singular, 
create: 'create' + singular 
+0

これは役立ちます!依然として生成された関数の出力は素晴らしい機能になります。多分私はそれを要求する機能を持たなければならないでしょう。 –

2

私はいくつかの掘削を行なったし、有益な属性/関連機能/共通機能のすべてを一覧表示する方法を思いついたので、私はまた、この問題に遭遇しました。これらの関数の中には、1つ以上のパラメータを持つものがあることに注意してください。これはあなたのSequelizeのバージョンではうまく機能しないかもしれません。私はこのデータを出力するために内部構造をかなり深く掘り下げており、もちろん変更の対象となっています。うまくいけば、これはあなたに役立ちます!

const models = require('./models'); 

for (let model of Object.keys(models)) { 
    if(!models[model].name) 
    continue; 

    console.log("\n\n----------------------------------\n", 
    models[model].name, 
    "\n----------------------------------"); 

    console.log("\nAttributes"); 
    for (let attr of Object.keys(models[model].attributes)) { 
     console.log(models[model].name + '.' + attr); 
    } 

    console.log("\nAssociations"); 
    for (let assoc of Object.keys(models[model].associations)) { 
    for (let accessor of Object.keys(models[model].associations[assoc].accessors)) { 
     console.log(models[model].name + '.' + models[model].associations[assoc].accessors[accessor]+'()'); 
    } 
    } 

    console.log("\nCommon"); 
    for (let func of Object.keys(models[model].Instance.super_.prototype)) { 
    if(func === 'constructor' || func === 'sequelize') 
     continue; 
    console.log(models[model].name + '.' + func+'()'); 
    } 
} 

、出力は以下のようになります。

---------------------------------- 
Assignment 
---------------------------------- 

Attributes 
Assignment.id 
Assignment.type 
Assignment.type_id 
Assignment.created_at 
Assignment.updated_at 
Assignment.user_id 
Assignment.reporter_id 

Associations 
Assignment.getUser() 
Assignment.setUser() 
Assignment.createUser() 
Assignment.getReporter() 
Assignment.setReporter() 
Assignment.createReporter() 
Assignment.getPost_assignment() 
Assignment.setPost_assignment() 
Assignment.createPost_assignment() 
Assignment.getHistory() 
Assignment.setHistory() 
Assignment.addHistory() 
Assignment.addHistory() 
Assignment.createHistory() 
Assignment.removeHistory() 
Assignment.removeHistory() 
Assignment.hasHistory() 
Assignment.hasHistory() 
Assignment.countHistory() 

Common 
Assignment.where() 
Assignment.toString() 
Assignment.getDataValue() 
Assignment.setDataValue() 
Assignment.get() 
Assignment.set() 
Assignment.setAttributes() 
Assignment.changed() 
Assignment.previous() 
Assignment._setInclude() 
Assignment.save() 
Assignment.reload() 
Assignment.validate() 
Assignment.hookValidate() 
Assignment.update() 
Assignment.updateAttributes() 
Assignment.destroy() 
Assignment.restore() 
Assignment.increment() 
Assignment.decrement() 
Assignment.equals() 
Assignment.equalsOneOf() 
Assignment.setValidators() 
Assignment.toJSON()