2016-03-28 22 views
2

İlişkilendirmeyi ayarladığımda nesneler üzerinde sihirli olarak oluşturulan tüm işlevleri çıkarmak için Sequelize (sequelizejs.com) kullanmanın bir yolu var mı? Örneğin;Nesnede işlevlerin sıralı olarak gösterilmesi

; Bir kullanıcı modeli var ve şimdi

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

createFriend işlevi nedeniyle belongsToMany ilişki mümkündür çağırabilir

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

ayarlayın.

Kullanıcı (veya kullanıcı) üzerinde oluşturulan tüm işlevlerin çıkış yolu var mı?

Bazen benim için bir nesneyi arayabileceğimin tam olarak belli olmadığı, bir şekilde çıkabilseydim bana yardımcı olurdu.

+0

sadece Promise'in yerine callback'inde içine hata ayıklama olmaz mı? –

+0

kullanıcı nesnesini konsolide etmek mi istiyorsunuz? CreateFriend için herhangi bir referans bulamadım, bu yüzden (beklediğim gibi) sihirli bir işlev olarak görünecek gibi görünüyor –

+0

Peki, nasıl hata ayıkladığınızı bilmiyorum, ancak düğüm denetçisiyle kullanıldığında Chrome Dev Tools'da –

cevap

5

Tüm sihirli işlevlerin kolayca çıkış yapabilmesinin bir yolunu bulamadım. Ancak kaynak koduna bakacak olursanız, bunların her biri, yaptıklarıyla ilgili açıklamalarla her bir ilişki türü için erişim altındadır.

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

Ait-çok:

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 

-Ait:

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

Has-Pek:

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-One:

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

Bu yardımcı oluyor! Yine de üretilen fonksiyonların bir çıktısı büyük bir özellik olacaktır. Belki bunu talep etmek zorunda kalacağım. –

2

Ben de bu yüzden biraz araştırma yaptık ve kullanışlı özellikler/dernek fonksiyonları/ortak fonksiyonların hepsini listelemek için bir yol ile geldi bu konuda koştum. Bu işlevlerden bazılarının bir veya daha fazla parametresi olabileceğini unutmayın. Bu, aynı zamanda, bu verileri çıkarmak için içsellerin derinliklerine indiğimde ve değişime tabi oldukları için, Sequelize sürümünüzle de çalışmayabilir. Umarım bu size yardımcı olur!

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+'()'); 
    } 
} 

ve çıkış gibi bir şey olacaktır:

---------------------------------- 
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()