0

Node で Mongoose を使用して、ブログ エントリを投稿してタグ付けできるアプリケーションに取り組んでいます。ブログ エントリが削除されたときに、その参照をブログから削除したいのですが、ここで助けが必要です。

以下はブログエントリを削除するルートですが、ブログエントリを削除しようとすると「TypeError: Cannot call method 'find' of undefined」と表示されるので、以下のコードが間違っていると思います。

app.post('/blog/delete/:id', function(req, res){

    model.BlogPost.findById(req.params.id, function (err, blog){
        if (err) {
            console.log(err);
            // do something
        }

        blog.remove(function(err) {
            console.log(err);
            // do something
        });


        var query = model.Tag.find( { blogs: { $in : blog } } );

        query.exec(function (err, tags) {
            if (err) {
                console.log(err);
                // do something
            }
            tags.remove();

            res.redirect('back');
        });
    });
});

ブログエントリのモデル:

var BlogPostSchema = new Schema({
    name : String,
    type : String,
    author : ObjectId,
    title   : String,
    body : String,
    buf : Buffer,
    date: { type: Date, default: Date.now },
    comments : [CommentSchema],
    meta : {
        upvotes : Number,
        downvotes : Number,
        // points : { type Number, default: },
        favs : Number,
        uniqueIPs : [String],
        tags : [String]
    }
});

modelObject.BlogPost = mongoose.model('BlogPost', BlogPostSchema);

タグのモデル:

var TagSchema = new Schema({
      name              : String
    , blogs             : [String]
});

modelObject.TagSchema = TagSchema;
modelObject.Tag = mongoose.model('Tag', TagSchema);
4

1 に答える 1

1

行番号がわからない場合はわかりにくいですが、model.Tagが未定義のようです。

補足:ブログが見つかり、正常に削除されない限り、タグを削除したくない場合があります。

于 2012-05-10T17:34:18.757 に答える