Как узнать, есть ли «детский» документ? в MongoDBx :: Класс - PullRequest
1 голос
/ 14 августа 2011

Я изучаю Perl MongoDBX :: Class и пишу приложение для блога.

Ниже приведены модели сообщений и комментариев.Если вызвать этот метод:

my $comments = $a_post->comments;

, приложение будет остановлено, если для этого поста нет комментариев.Вопрос в том, как проверить, есть ли в этом сообщении комментарий?

Спасибо.

package Model::Schema::Post;



use MongoDBx::Class::Moose;

use namespace::autoclean;



with 'MongoDBx::Class::Document';



has 'title' => (is => 'rw', isa => 'Str', required => 1,);

belongs_to 'author' => (is => 'ro', isa => 'Author', required => 1);

has 'post_date' => (is => 'ro', isa => 'DateTime', traits => ['Parsed'], required => 1);

has 'text' => (is => 'rw', isa => 'Str', required => 1);

joins_many 'comments' => (is => 'ro', isa => 'Comment', coll => 'comments', ref => 'post');

holds_many 'tags' => (is => 'rw', isa => 'Tag', predicate => 'has_tag');



__PACKAGE__->meta->make_immutable;


package Model::Schema::Comment;



use MongoDBx::Class::Moose;

use namespace::autoclean;



with 'MongoDBx::Class::Document';



belongs_to 'post' => (is => 'ro', isa => 'Post', required => 1);

has 'author' => (is => 'ro', isa => 'Author', required => 1);

has 'comment_date' => (is => 'ro', isa => 'DateTime', traits => ['Parsed'], required => 1);

has 'text' => (is => 'rw', isa => 'Str', required => 1);

has 'rateing' => (is => 'rw', isa => 'Int');



__PACKAGE__->meta->make_immutable;

1 Ответ

0 голосов
/ 16 августа 2011

Я не уверен, почему ваше приложение останавливается.Глядя на вашу схему, запуск

my $comments = $a_post->comments;

должен вернуть объект MongoDBx :: Class :: Cursor (который на самом деле является просто объектом MongoDB :: Cursor).На этом курсоре вы можете запустить:

my $num_comments = $comments->count;
if ($num_comments > 0) {
   my @comments = $comments->all;
   ...
}

Если это не поможет вам, а ваше приложение все еще зависает, это поможет мне, если вы отправите мне пример кода, чтобы я мог попробоватьузнайте, что происходит.

Кстати, я автор MongoDBx :: Class.

PS Если вы чувствуете, что наткнулись на какую-то ошибку в MongoDBx :: Class, почувствуйтесвободно открывать отчет об ошибках, как описано на странице MongoDBx :: Class в CPAN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...