1

AngularJS、Express、および MongoDB を連携させるのに問題があります。私はまだこれらの 3 つすべてに慣れていないので、単純な「to do」アプリを作成し、チェック ボタンを切り替えて完了をマークしようとしています。最終的に MongoDB レコードを更新する高速ルートに $http 'POST' を実行する角度側で関数を実行できます。動作を停止する前に、これを 6 回実行できます。インスペクタ コンソールで、関数がまだ呼び出されていることを確認できますが、$http 'POST' とルートの実行の間のどこかで、もう登録されません。Express サーバーで、ルートからの console.log アクティビティが表示されなくなりました。

これが私のtoDoController.jsです

toDoApp.controller('ToDoController', function ToDoController($scope, $http, itemsData) {

    ... other functions

    $scope.toggleToDo = function(item) {
        console.log('updateToDo()');
        console.log(item);
        $http({
            method: 'POST',
            url: '/todolist/toggle_to_do',
            data: item
        }).
        success(function(data, status, headers, config) {
            console.log('success post');
        }).
        error(function(data, status, headers, config) {
            console.log(data);
            console.log(status);
            console.log(headers);
            console.log(config);
        }); 
    }
}

Express app.js ルート

app.post('/todolist/toggle_to_do', todolist.toggleToDo);

Express route.js

var MongoClient = require('mongodb').MongoClient; 
var ObjectID = require('mongodb').ObjectID; // used to create ObjectID when looking for the record

var collection
var database

// Connect to Database ------------------------------------------------
    MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db){
            if(err) throw err;
            console.log('\033[96m + \033[39m connected to mongodb');

            collection = db.collection('to_do_list');
            database = db;

            }
        );

    // update record
    exports.toggleToDo = function(req, res) {
        console.log("-toogle 'To Do item' completed status");

        console.log(req.body.completed);
        console.log(req.body._id);

        collection.update({
                _id: new ObjectID(req.body._id)
            }, 
            {
                $set: { 
                    completed: req.body.completed 
                } 
            },
            function(err) {
                if(err) console.warn("Could not write to DB");
                else console.log("Item successfully updated!");
            }
        );
    };

どんな助けでも大歓迎です!ありがとう!

4

1 に答える 1

1

回答を終了していないようです。

res.end();

exports.toggleToDo = function(req, res) {
    console.log("-toogle 'To Do item' completed status");

    console.log(req.body.completed);
    console.log(req.body._id);

    collection.update({
            _id: new ObjectID(req.body._id)
        }, 
        {
            $set: { 
                completed: req.body.completed 
            } 
        },
        function(err) {
            if(err) console.warn("Could not write to DB");
            else console.log("Item successfully updated!");
        }
    );
    res.end();
};
于 2013-08-15T14:53:30.050 に答える