繁体   English   中英

MongoDB查询不起作用

[英]Mongodb query doesn't work

在我的图像共享应用程序中,您可以上传图像并创建相册。 当您从网站删除图片时,该图片也应从相册中删除(其中包含图片)。

以下是删除图片的方法,而我真正需要帮助的是为什么下面的相册中的删除图片的代码(imageName和imageId)不起作用。

提前致谢!

型号:

var AlbumSchema = new Schema({
      title             : String,
      imageName         : [String],
      imageId           : [String]
});

modelObject.AlbumSchema = AlbumSchema;
modelObject.Album = mongoose.model('Album', AlbumSchema);

--

var BlogPostSchema = new Schema({
    name : String,
    size : Number,
    type : String,
    author : ObjectId,
    title   : String
});

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

以下代码中不起作用的部分如下:

albums[i].imageName.remove(j);
albums[i].imageId.remove(j);                            
albums[i].save(function (err){
    if (err) {
        console.log(err);
        // do something
    }
});

完整代码:

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

    model.BlogPost.findById(req.params.id, function (err, blog){

        var theImage = blog.name;

        var query = albumModel.Album.find( { imageName:theImage } )
        query.exec(function (err, albums) {

            if (!albums) {

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

                res.redirect('/blogs');

            }

            else {
                for (var i = 0; i < albums.length; i++) {
                    for (var j = 0; j< albums[i].imageName.length; j++){

                        if (theImage == albums[i].imageName[j]){

                            albums[i].imageName.remove(j);
                            albums[i].imageId.remove(j);                            
                            albums[i].save(function (err){
                                if (err) {
                                    console.log(err);
                                    // do something
                                }
                            });
                        }
                    }
                }
            }

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

            res.redirect('/blogs');
        });
    });
});

JavaScript数组没有remove方法,因此我希望您的代码可能崩溃。 您应该使用像albums[i].imageName.splice(j, 1);这样的代码albums[i].imageName.splice(j, 1); 代替。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM