Usando Meteor, me pregunto cuál es la mejor forma de manejar diferentes colecciones del lado del cliente que comparten la misma colección de bases de datos del lado del servidor. Considere el siguiente ejemplo: Tengo una colección User
, y en mi lado del cliente tengo una lista de usuarios que son amigos y tengo una función de búsqueda que realiza una consulta en toda la base de datos de usuarios, devolviendo una lista de nombres de usuario que coincide con la consulta.Estrategias de publicación/suscripción de Meteor para colecciones únicas del lado del cliente
En el método Publicar del lado del servidor, tengo dos consultas en la misma colección que devuelven diferentes conjuntos de documentos. ¿Deberían estos datos entrar en dos colecciones separadas en el lado del cliente? ¿O deberían todos los documentos del Usuario que coinciden con ambas consultas terminar en la misma colección? En este último caso, ¿podría duplicar el código utilizado tanto para la consulta del lado del servidor como para la del lado del cliente?
En el servidor:
Meteor.publish('searchResults', function(query){
var re = new RegExp(query, 'i')
return Users.find({ 'name' : {$regex: re}})
})
En el cliente:
Session.set('searchQuery', null)
Meteor.autosubscribe(function(){
Meteor.subscribe('searchResults', Session.get('searchQuery'))
})
Template.search.events = {
'keyup #user-search' : function(e){
Session.set('searchQuery', e.target.value)
}
}
_.extend(Template.search, {
searchResults: function() {
var re = new RegExp(Session.get('searchQuery'), 'i')
return Users.find({ 'name' : {$regex: re}})
}
})
esto parece una solución plausible, pero no una óptima uno. ¿Qué ocurre si quiero crear una nueva colección del lado del cliente que consista en resultados de búsqueda de varias colecciones del lado del servidor?
sólo quieren hacer una nota que mi información sobre cómo "combina" Meteor los registros no puede ser exacta o verdadero. Si un desarrollador de Meteor o alguien que sabe mejor puede confirmar, por favor hazlo. Mi suposición se basa en mis propias observaciones personales. – matb33
Parece que mis observaciones fueron correctas con respecto a la combinación. Consulte la sección "Fusionar cuadro" en esta respuesta: http://stackoverflow.com/a/13867122/962223 – matb33
Cuando coloco las funciones de búsqueda en una carpeta compartida, p. lib las funciones de publicación pueden encontrarlos. Cuando los coloco en el mismo archivo que las funciones de publicación, los encuentran las funciones de publicación, pero no están visibles en el cliente. Ideas? – cramhead