sql >> データベース >  >> NoSQL >> MongoDB

Node.js(express)、Angular、MongoDBを使用したPUTリクエストの問題

    既存の習慣を更新するためのコードフラグメントは、いくつかの小さな修正を加えるだけで問題なく機能するはずです

    1. エラーが発生した場合は、常にreturnを使用してください
    2. 常にステータスを送り返します。この場合、500を送信します
    3. 見つからないことを確認し、404を返します
    4. 単純な更新オブジェクトを使用します。これにより、更新オブジェクトに含まれるフィールドのみが更新されます
    5. 僧侶から返されたmongodbドキュメントには保存機能がないため、コレクションを介してドキュメントを更新する必要があります
    6. リクエストに本文があるかどうかを確認し、400-不正なリクエストを送信します

    オブジェクトIDを16進数またはObjectIdとしてfindByIdに渡すことができます 僧侶のドキュメントで述べられているように

    router.put('/api/habits/:habit_id', function(req, rest){
        var db = req.db;
        var collection = db.get('habits');
    
        if(!req.body) { return res.send(400); } // 6
    
        collection.findById(req.params.habit_id, function(e,data){  
            if(e) { return res.send(500, e); } // 1, 2
    
            if(!data) { return res.send(404); } // 3
    
            var update = { title : req.body.title, count : req.body.count }; // 4
    
            collection.updateById(req.params.habit_id, update, function(err) { // 5
                if(err) {
                    return res.send(500, err);
                }
    
                res.json(data);
            });
        });
    });
    

    上記のコードは、findAndModifyを使用してさらに簡略化できます。 僧侶の機能。



    1. Django+Pymongoがアカウント確認リンクを作成しています

    2. 経度、緯度、特定の距離を持つmongodbフィルタードキュメント

    3. MongoDB+Python-非常に遅い単純なクエリ

    4. マングースでページ付けを行う方法