0

これは私のコレクションです:

{
    "_id" : "Kan6btPXwNiF84j8e",
    "title" : "Chapter Title 1",
    "businessId" : "qmWJ3HtZrpka8dpbM",
    "createdBy" : "GfdPfoPTiSwLv8TBR",
    "sections" : [ 
        {
            "id" : "T5KAfTcCb7pCudT3a",
            "type" : "TEXT",
            "data" : {
                "text" : "<h1>2</h1><h1>asd</h1>"
            },
            "createdAt" : ISODate("2016-12-03T10:35:59.023Z"),
            "updatedAt" : ISODate("2016-12-03T10:35:59.023Z")
        }
    ],
    "createdAt" : ISODate("2016-12-02T12:15:16.577Z"),
    "updatedAt" : ISODate("2016-12-03T12:54:50.591Z")
}

これは、クライアント側から呼び出している隕石メソッドです

deleteSection: function (section_id, chapter_id) {


        chaptersCollection.update(
            {$and: [{_id: chapter_id}, {'sections.id': section_id}]},
            {$pull: {'sections': {'id': section_id}}},
            function (err, numAffected) {
                if (err) {
                    console.log(err);
                    return err;
                }else{
                    console.log(numAffected);
                }
            });
        return 'Section Successfully Deleted';
    }

meteor メソッドのコールバック関数では、影響を受ける行として 1 を返します。しかし、サーバー上のドキュメントは更新されていません。

どこが間違っているのですか?

4

2 に答える 2

0

プロジェクトでプルを使用しようとしたときに、同様の問題が発生しました。$pull を使用する代わりに、データベースの外部で配列を処理し、その配列を外部で処理したものとして設定しました。だから多分あなたは別の方法としてそのようなことを試すことができます

deleteSection: function (section_id, chapter_id){

     const oldArray = chaptersCollection.findOne(chapter_id).sections;
     const newArray = oldArray.filter(function(section) {
                         return section.id !== section_id
                         });

     chaptersCollection.update({_id: chapter_id},
                               {$set: {sections: newArray}},
                               function (err, numAffected) {
                                   if (err) {
                                       console.log(err);
                                       return err;
                                    }else{
                                       console.log(numAffected);
                                    }
                                });
     return 'Section Successfully Deleted';

}
于 2016-12-04T11:03:54.093 に答える
0

$and は本当に必要ですか?

deleteSection: function (section_id, chapter_id) {
    chaptersCollection.update(
        {_id: chapter_id, 'sections.id': section_id},
        {$pull: {'sections': {'id': section_id}}},
        function (err) {
            if (err) {
                console.log(err);
                return err;
            }else{
                console.log('success');
                return 'success';
            }
        });
}
于 2016-12-03T13:08:20.310 に答える