mongodbの別のオブジェクトにオブジェクトをプッシュするときにエラーが発生しました

アレクサンドルベーリング

req.body.coursesには、特定のカテゴリに追加したいコースの複数のIDがあります。問題は、コードを実行すると、ループの数に応じて、コースが1回以上、場合によっては4〜5回保存されることです。します。

関数:

router.post('/categories/:cat_id/', function (req, res) {
    Categorie.findById(req.params.cat_id, function(err, categorie){
    if(err){
      console.log(err);
    } else {
      var courses = req.body.courses;
      courses.forEach(function (course){
          Course.findOne({  _id:  course }, function(err, foundCourse) {
              if(err){
                  console.log(err);
              } else {
                  categorie.courses.push(foundCourse._id);
                  categorie.save();
              }
          });
      });
    }
  });
  return res.redirect('/dash');
});

CategorieSchema:

var categorieSchema = mongoose.Schema({
   name: String,
   courses: [
        {
            type: mongoose.Schema.Types.ObjectId,
            ref: "Course"
        }    
    ]
});

カテゴリに4つのコースを追加しようとする例を次に示します。

{ "_id" : ObjectId("5a871964a6b4820ecf7abaa7"), "courses" : [ ObjectId("5a870a7374486e0b0d69f710"), ObjectId("5a870a7a74486e0b0d69f711"), ObjectId("5a870a6974486e0b0d69f70f"),   
 ObjectId("5a870a7374486e0b0d69f710"), ObjectId("5a870a7a74486e0b0d69f711"), ObjectId("5a870a6974486e0b0d69f70f"), 
 ObjectId("5a870a7374486e0b0d69f710"), ObjectId("5a870a7a74486e0b0d69f711"), ObjectId("5a870a6974486e0b0d69f70f") ], "name" : "test2", "__v" : 3 }
ラーフルシャルマ

Node.jsは非同期です。ループが完全に実行されるのを待たず、既存の配列に_idを追加するたびに、2〜3回追加されます。

これをテストしていない場合は、これを試してください。

const findOne = (course) => {
    return new Promise((resolve, reject) => {
        Course.findOne({
            _id: course
        }, (err, foundCourse) => {
            if (err)
                return reject(err);
            return resolve(foundCourse._id);
        });
    });
}

router.post('/categories/:cat_id/', function (req, res) {
    Categorie.findById(req.params.cat_id, function (err, categorie) {
        if (err) {
            console.log(err);
            res.status(400).json(err);
        } else {
            var courses = req.body.courses;

            Promise.all(courses.map((course) => {
                return findOne(course);
            })).then((data) => {
                // check if course id already there skip
                data = data.filter((course) => {
                    return !categorie.courses.includes(course);
                });
                categorie.courses = categorie.courses.concat(data);
                categorie.save();
                return res.redirect('/dash');
            }).catch((err) => {
                console.log(err);
                res.status(400).json(err);
            });
        }
    });
});

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

オブジェクトをjsonにダンプするときにエラーが発生しました

分類Dev

別のクラスのコンストラクターを参照してオブジェクトを渡すときにエラーが発生しました

分類Dev

オブジェクトをmongodb配列にプッシュしようとするとエラーが発生します

分類Dev

Double型のオブジェクトを比較するときにエラーが発生しますか?

分類Dev

NSStringオブジェクトをNSMutableArrayに追加するときにエラーが発生しました

分類Dev

vbscriptのオブジェクトで配列インデックスを設定するときにエラーが発生しましたか?

分類Dev

配列オブジェクトtypescript / JavaScriptの一部のプロパティを削除するときにエラーが発生しました

分類Dev

同じ名前のオブジェクトを宣言しているときにエラーが発生しますが、forループを使用してオブジェクトを宣言してもエラーは発生しません

分類Dev

Reactで子オブジェクトをマップしようとしたときに未定義のエラーが発生しました

分類Dev

javascriptループでオブジェクトの配列を作成するときにエラーが発生しました

分類Dev

サイズのあるオブジェクトのベクトルを初期化するときにエラーが発生しました

分類Dev

pysparkジョブpickle.PicklingErrorの実行中にエラーが発生しました:オブジェクトをシリアル化できませんでした:TypeError: 'JavaPackage'オブジェクトを呼び出すことができません

分類Dev

リストとハッシュマップを使用してJavaJson配列オブジェクトを作成中に出力エラーが発生しました

分類Dev

MongoDBは、重複が発生しないように、オブジェクトのmongodb配列内にユーザーが提供したオブジェクトの配列をプッシュします。

分類Dev

drangeを使用して日時オブジェクトのリストを変換してmatplotlibにプロットすると、エラーが発生します

分類Dev

オブジェクトを配列にプッシュしたいが、上書きが発生する

分類Dev

Javascriptでオブジェクトを配列にプッシュすることは機能しますが、関数がオブジェクトを返そうとするとエラーが発生します

分類Dev

SwiftUIToggleでCoreDataオブジェクトのBoolを制御すると、クラッシュが発生します

分類Dev

datetime.dateオブジェクトをdatetime.timeオブジェクトと組み合わせるときにエラーが発生しました

分類Dev

オブジェクトのインスタンスをベクターで検索するときにエラーが発生しました

分類Dev

オブジェクトを解析しようとしたときにjqueryエラーが発生しました

分類Dev

MongoDBとNodejsの配列にオブジェクトをプッシュしようとすると、なぜcastErrorが発生するのですか?

分類Dev

ループしてオブジェクトにキーを追加するとエラーが発生します

分類Dev

地理データをMongodbにインポートするときにエラーが発生しました:オブジェクトから地理キーを抽出できません、不正な形状のジオメトリ

分類Dev

オブジェクト検出を操作しているときにOpencvエラーが発生します

分類Dev

非オブジェクトの「id」プロパティを取得しようとしたときにLaravel5.8エラーが発生しました

分類Dev

有効なLatLngオブジェクトからLatLngBoundsオブジェクトを作成しようとしたときにエラーが発生しました

分類Dev

別のオブジェクト内のオブジェクトを参照すると、JsonSerializationExceptionが発生します

分類Dev

EntityFrameworkの移行で複雑なオブジェクトからフィールドを作成するときにエラーが発生しました

Related 関連記事

  1. 1

    オブジェクトをjsonにダンプするときにエラーが発生しました

  2. 2

    別のクラスのコンストラクターを参照してオブジェクトを渡すときにエラーが発生しました

  3. 3

    オブジェクトをmongodb配列にプッシュしようとするとエラーが発生します

  4. 4

    Double型のオブジェクトを比較するときにエラーが発生しますか?

  5. 5

    NSStringオブジェクトをNSMutableArrayに追加するときにエラーが発生しました

  6. 6

    vbscriptのオブジェクトで配列インデックスを設定するときにエラーが発生しましたか?

  7. 7

    配列オブジェクトtypescript / JavaScriptの一部のプロパティを削除するときにエラーが発生しました

  8. 8

    同じ名前のオブジェクトを宣言しているときにエラーが発生しますが、forループを使用してオブジェクトを宣言してもエラーは発生しません

  9. 9

    Reactで子オブジェクトをマップしようとしたときに未定義のエラーが発生しました

  10. 10

    javascriptループでオブジェクトの配列を作成するときにエラーが発生しました

  11. 11

    サイズのあるオブジェクトのベクトルを初期化するときにエラーが発生しました

  12. 12

    pysparkジョブpickle.PicklingErrorの実行中にエラーが発生しました:オブジェクトをシリアル化できませんでした:TypeError: 'JavaPackage'オブジェクトを呼び出すことができません

  13. 13

    リストとハッシュマップを使用してJavaJson配列オブジェクトを作成中に出力エラーが発生しました

  14. 14

    MongoDBは、重複が発生しないように、オブジェクトのmongodb配列内にユーザーが提供したオブジェクトの配列をプッシュします。

  15. 15

    drangeを使用して日時オブジェクトのリストを変換してmatplotlibにプロットすると、エラーが発生します

  16. 16

    オブジェクトを配列にプッシュしたいが、上書きが発生する

  17. 17

    Javascriptでオブジェクトを配列にプッシュすることは機能しますが、関数がオブジェクトを返そうとするとエラーが発生します

  18. 18

    SwiftUIToggleでCoreDataオブジェクトのBoolを制御すると、クラッシュが発生します

  19. 19

    datetime.dateオブジェクトをdatetime.timeオブジェクトと組み合わせるときにエラーが発生しました

  20. 20

    オブジェクトのインスタンスをベクターで検索するときにエラーが発生しました

  21. 21

    オブジェクトを解析しようとしたときにjqueryエラーが発生しました

  22. 22

    MongoDBとNodejsの配列にオブジェクトをプッシュしようとすると、なぜcastErrorが発生するのですか?

  23. 23

    ループしてオブジェクトにキーを追加するとエラーが発生します

  24. 24

    地理データをMongodbにインポートするときにエラーが発生しました:オブジェクトから地理キーを抽出できません、不正な形状のジオメトリ

  25. 25

    オブジェクト検出を操作しているときにOpencvエラーが発生します

  26. 26

    非オブジェクトの「id」プロパティを取得しようとしたときにLaravel5.8エラーが発生しました

  27. 27

    有効なLatLngオブジェクトからLatLngBoundsオブジェクトを作成しようとしたときにエラーが発生しました

  28. 28

    別のオブジェクト内のオブジェクトを参照すると、JsonSerializationExceptionが発生します

  29. 29

    EntityFrameworkの移行で複雑なオブジェクトからフィールドを作成するときにエラーが発生しました

ホットタグ

アーカイブ