In Meteor, quando recuperi un record da un database, è solo un record. Quindi, se ho una raccolta chiamata Dogs
, una dog
potrebbe avere fur: 'brown'
o breath: 'stinky'
, ma non ha un metodo bark()
.Qual è il modo migliore per allegare un comportamento a una collezione Meteor?
Ovviamente, è possibile creare alcune funzioni che prevedono uno dog
come argomento e quindi eseguire operazioni su tale dog
. Potrei anche incapsulare tutte queste funzioni in un singolo costruttore. Non sono pazzo di questo approccio, ma se qualcuno ha un modo pulito e sensato per farlo, sono tutto orecchie.
Un altro pensiero che ho avuto è stato quello di avvolgere il dog
in un Backbone.Model
. Questo potrebbe essere interessante, come fetch
e save
potrebbe essere ridefinito per fare find
e insert
o update
, e puoi anche definire tutto il tuo comportamento, ma ho letto che questo tipo di cose è generalmente scoraggiato.
C'è un modo giusto per farlo? C'è un Meteor.Model
ufficialmente in lavorazione? In che modo gli altri stanno risolvendo questo problema?
Modifica
Per chi arriva a questa domanda più di un anno dopo la risposta accettata: Al momento di questa modifica sto usando Exygy's minimongoid mrt package, che ha alcuni miglioramenti per haihappen's version che è menzionato nel post del blog legati alla dalla risposta accettata.
Attualmente sto contribuendo al repository per rendere i set di risultati più simili a relazioni. Spero che altri ne facciano uso e si sentano propensi a contribuire con utili funzionalità.
Modifica
Un'altra risposta ha suggerito di utilizzare la proprietà transform
durante la creazione della collezione. Mentre preferisco decisamente qualcosa che non ho davvero bisogno di costruire da solo, questa funzionalità aggiunge molte possibilità, e mi auguro che tutti i team che stanno lavorando su un ORM per Meteor ne traggano vantaggio al centro .
Here's a blog post spiegazione dell'utilizzo della proprietà transform
.
Inoltre, minimongoid is now available as a Meteor package, e lo sto ancora utilizzando. Supporta la convalida e la dichiarazione delle relazioni. Ho aggiunto anche alcune funzionalità a questo pacchetto, quindi se una scheda ha molti pezzi, board.pieces().create(attributes)
verrà mantenuto un nuovo record piece
con il dato attributes
e verrà automaticamente associato allo board
. Tra le varie soluzioni che ho visto, questo sembra essere il più completo.
Degno di nota è il [di raccolta-comportamenti] (http://beta.atmospherejs.com/package/collection-behaviours) pacchetto. –
@DanDascalescu, grazie per il link!Non si adatta perfettamente a ciò che sto cercando, ma mi sarebbe molto utile in altri modi. Molto apprezzato! – Samo