В Meteor, когда вы извлекаете запись из базы данных, это только запись. Поэтому, если у меня есть коллекция под названием Dogs, dog может иметь fur: 'brown' или breath: 'stinky', но у нее нет метода bark().
Очевидно, я мог бы создать некоторые функции, ожидающие a dog в качестве аргумента, а затем выполнить операции над этим dog. Я мог бы даже инкапсулировать все эти функции в один конструктор. Я не сумасшедший об этом подходе, но если кто-то получил чистый и разумный способ сделать это, я все уши.
Еще одна мысль о том, что я должен был обернуть dog в Backbone.Model. Это может быть интересно, так как fetch и save могут быть переопределены для выполнения find и insert или update, и вы также можете определить все свое поведение там, но я прочитал, что этот тип вещь обычно обескуражена.
Есть ли правильный способ сделать это? Есть ли Meteor.Model официально в работах? Как другие решают эту проблему?
Edit
Для тех, кто подходит к этому вопросу через год после принятого ответа: во время этого редактирования я использую Exygy minimongoid mrt package, который имеет некоторые улучшения haihappen version, которые упоминаются в сообщении в блоге, связанном с принятым ответом.
В настоящее время я вношу вклад в репозиторий, чтобы сделать результат более похожим на отношение. Надеемся, что другие получат от этого выгоду и почувствуют склонность вносить полезные функции.
Edit
Другой ответ предложил использовать свойство transform при создании коллекции. Хотя я определенно предпочитаю то, что мне действительно не нужно строить самостоятельно, эта функция добавляет много возможностей, и я надеюсь, что любые команды, которые работают над ORM для Meteor, воспользуются этим в своей основе.
Здесь сообщение в блоге, в котором объясняется, как использовать свойство transform.
Кроме того, minimongoid теперь доступен как пакет Meteor, и я все еще использую его. Он поддерживает проверку и декларирование отношений. Я добавил некоторые функциональные возможности для этого пакета, поэтому, если на плате много элементов, board.pieces().create(attributes) будет сохранять новую запись piece с данным attributes и будет автоматически ассоциироваться с board. Из различных решений, которые я видел, это кажется наиболее полным.