0

我正在使用 Mongoose 在 Node 中开发一个应用程序,您可以在其中发布博客条目并标记它们。当博客条目被删除时,我想从博客中删除它的引用,这里是我需要帮助的地方。

下面是删除博客条目的路线,但是当我尝试删除博客条目时,我得到“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 回答