¿Cuál es la mejor manera de vincular el comportamiento a una colección Meteor?
En Meteor, cuando recuperas un registro de una base de datos, es solo un registro. Así que si tengo una colección llamadaDogs
, unadog
podría tenerfur: 'brown'
obreath: 'stinky'
, pero no tiene unbark()
método.
Obviamente, podría crear algunas funciones que esperan undog
como un argumento y luego realizar operaciones en esedog
. Incluso podría encapsular todas estas funciones en un solo constructor. No estoy loco por este enfoque, pero si alguien tiene una manera limpia y sensata de hacerlo, soy todo oídos.
Otro pensamiento que tuve fue envolver eldog
en unBackbone.Model
. Esto podría ser interesante, ya quefetch
ysave
podría ser redefinido para hacerfind
yinsert
oupdate
, y puedes definir todo tu comportamiento allí también, pero he leído que este tipo de cosas generalmente no se recomienda.
¿Hay una manera correcta de hacerlo? Hay unMeteor.Model
oficialmente en las obras? ¿Cómo están resolviendo los demás este problema?
Editar
Para aquellos que acudan a esta pregunta más de un año después de la respuesta aceptada: en el momento de esta edición, estoy usandoPaquete de mrt minimongoid de Exygy, que tiene algunas mejoras parala versión de haihappen Eso se menciona en la publicación del blog vinculada a la respuesta aceptada.
Actualmente estoy contribuyendo al repositorio para hacer que los conjuntos de resultados sean más parecidos a una relación. Esperemos que otros se aprovechen de él y se sientan inclinados a contribuir con una funcionalidad útil.
Editar
Otra respuesta sugirió usar eltransform
Propiedad al crear la colección. Aunque definitivamente estoy prefiriendo algo que realmente no necesito construir yo mismo, esta característica agrega muchas posibilidades, y espero que cualquier equipo que esté trabajando en un ORM para Meteor se aproveche de esto en el centro. .
Aquí hay una entrada de blog explicando cómo usar eltransform
propiedad.
También,minimongoid ahora está disponible como un paquete Meteor, y todavía lo estoy usando. Tiene soporte para validación y para declarar relaciones. También he agregado alguna funcionalidad a este paquete, por lo que si un tablero tiene muchas piezas,board.pieces().create(attributes)
persistirá un nuevopiece
grabar con lo dadoattributes
y se asociará automáticamente con elboard
. De las diversas soluciones que he visto, esta parece ser la más completa.