2013-10-28 12 views
5

Ho un modello di dati in cui è richiesta un'associazione/chiave esterna. C'è un modo per far rispettare questo vincolo durante la creazione del modello senza entrare in una situazione di pollo/uovo?Sequelize.js - associazione modello durante chiamata "crea" o "build"

Diciamo che ho una classe User che richiede almeno uno device da associare. Allo stesso modo, lo device deve appartenere a un utente. Qualcosa di simile (codice non testato, non mente gli errori di sintassi):

User = db.define("user", { 
    name: Sequelize.STRING 
}) 

Device = db.define("device", { 
    uuid: Sequelize.STRING 
}) 

User.hasMany(Device) 

voglio assicurare che, quando create in prima convocazione, che ho tutte Device informazioni, nonché tutte le informazioni User. Mantenendo con "modelli grassi, controllori skinny" vorrei mettere questo nei miei modelli. È possibile fare qualcosa di simile?

user = User.create(
    name: "jesse" 
    device: 
     uuid: "84e824cb-bfae-4d95-a76d-51103c556057" 
) 

Posso sostituire il metodo create? O c'è qualche tipo di hook di evento di salvataggio before che posso usare?

risposta

6

L'attuale master ha il supporto per i ganci.

var User = sequelize.define('User', { 
    username: DataTypes.STRING 
}, { 
    hooks: { 
    beforeCreate: function(user, next) { 
     makeYourCheck(function() { 
     next("a string means that an error happened.") 
     }) 
    } 
    } 
}) 

È possibile controllare il PR per ulteriori informazioni: https://github.com/sequelize/sequelize/pull/894

Problemi correlati