Meteor:如何在MongoDB中单击一下,从两个集合中删除两个文档

时间:2016-01-31 16:08:44

标签: javascript mongodb events meteor

一些"新闻文件" (一个集合)可能包含一个图像(另一个集合我使用cfs:standard-packagescfs:filesystem用于处理文件。)

这是Mongo数据库中的新闻文件:

{
    "_id" : "75d5nZGitsLvo5APM",
    "title" : "News with Image",
    "description" : "This news entry has an image",
    "type" : "news",
    "createdAt" : ISODate("2016-01-31T15:46:01.334Z"),
    "coverImageId" : "js5k88PuPeKJwRqcq"
}

这是一张图片文件:

{
    "_id" : "js5k88PuPeKJwRqcq",
    "original" : {
        "name" : "amir_rahbaran.jpg",
        "updatedAt" : ISODate("2014-02-14T14:56:36.000Z"),
        "size" : 41614,
        "type" : "image/jpeg"
    },
    "uploadedAt" : ISODate("2016-01-31T15:45:58.060Z"),
    "copies" : {
        "images" : {
            "name" : "amir_rahbaran.jpg",
            "type" : "image/jpeg",
            "size" : 41614,
            "key" : "images-js5k88PuPeKJwRqcq-amir_rahbaran.jpg",
            "updatedAt" : ISODate("2016-01-31T15:45:58.000Z"),
            "createdAt" : ISODate("2016-01-31T15:45:58.000Z")
        }
    }
}

问题:管理员可能想要删除新闻条目。目前,新闻文件已被删除。因此图像保存在数据库中。如您所见,新闻文档中的coverImageId和图片文档中的_id 相同

我的template.js:

Template.adminNewsEventsList.events({
    'click #js-delete-ne': function (evt,template) {
        evt.preventDefault();
        var deleteConfirmation = confirm('Really delete this entry?');
        if (deleteConfirmation) {
            Images.remove({_id: "coverImageId"});
            NewsEvents.remove(this._id);
        };
    }
});

我的template.html:

<template name="adminNewsEventsList">
    <div class="container">
        <div class="col-md-6 col-md-offset-3">
            {{#each newsEventsData}}
            <ul class="list-group">
                <li class="list-group-item">
                <a title="Edit" id="js-edit-ne" href="{{pathFor route='adminNewsEventsEdit'}}">{{title}}</a>
                <!-- edit button -->
                <a title="Edit" id="js-edit-ne" class="btn btn-primary" href="{{pathFor route='adminNewsEventsEdit'}}"><i class="fa fa-pencil-square-o"></i></a>
                <!-- delete button -->
                <a title="Edit" id="js-delete-ne" class="btn btn-danger" href="#"><i class="fa fa-trash"></i> </a>
                </li>
            </ul>
            {{/each}}
        </div>
    </div>
</template>

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

好的,我想点击提交按钮的那一刻,解决方案就突然出现了。我仍然分享它,因为它可能对其他人有用。

行:Images.remove({_id: "coverImageId"})必须更改为:

Images.remove({_id: this.coverImageId})

希望有人会发现它有益。

任何改进仍然受到赞赏。