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!");
}
);
};
どんな助けでも大歓迎です!ありがとう!