gpt4 book ai didi

javascript - $http.delete 回调在基本 CRUD 应用程序中未触发

转载 作者:行者123 更新时间:2023-12-02 14:39:38 24 4
gpt4 key购买 nike

我有一个基本的 CRUD 应用程序,我的主要问题是删除功能。

Angular Controller 调用 $http 操作

'use strict';

(function(){

var app = angular.module('JournalApp', [])
.controller('JournalController', function($scope, $http){

var loadEntries = function(){
$http.get('/api/entry')
.then(function(response){
$scope.entries = response.data;
if(response.data.noEntries){
$scope.entries.noEntries = true;
};
});
};

loadEntries();

//Create new Journal Entry
$scope.addEntry = function(entry){
var data = ({
hours: entry.hours,
notes: entry.notes
});

$http.post('/api/entry', data);

loadEntries();
};

//Delete Journal Entry
$scope.delEntry = function(item){

$http({
method: 'DELETE',
url: '/api/entry',
// data: item,
data: {date: item.date},
headers: {'Content-Type': 'application/json;charset=utf8'}

}, loadEntries());
};

});

})();

它被路由到我的服务器端处理程序

  //GET Request
this.getEntries = function(req, res){
journal.find().sort({date: -1}).toArray(function(err, doc){
if(err) throw err;

if(doc.length){
console.log('found entries');
res.json(doc);

} else {
console.log('Returning no Entries.')
res.json(({ "noEntries": true }));
}
})
};

//Post Request
this.addEntry = function(req, res){
console.log('Adding new entry...');

var time = new Date();
var notation = req.body.notes || 'n/a'

journal.insert({ hours: req.body.hours, notes: notation, date: new Date()})
};

//Delete Request
this.deleteEntry = function(req, res){

journal.findOne({"date": new Date(req.body.date)}, function(err, data){
if(err) throw err;

console.log('Removing item _id: ' + data._id);
journal.remove({"date": data.date});

});
};

}

module.exports = entryHandler;

我可以通过 mongo (和 console.log)验证该条目已删除并且一切都按预期工作。但是 $http 回调不会触发。我使用回调函数(loadEntries)刷新页面上的日志整体。

当我将代码写出时,我可以触发回调

$http.delete('/api/entry', item).then( function(){ loadEntries() } );

但是,当我使用此方法时,服务器端处理程序无法正常工作。

有没有更好的方法来解决这个问题而不需要大量额外的模块?在我开始到处添加包为我做工作之前,我更愿意学习基础知识。

编辑:

我尝试添加 .then(function(){ loadEntries() });到我的 Angular 代码,它不起作用。

最佳答案

您需要在 $http 调用中调用 .then 来执行回调函数:

$http({
method: 'DELETE',
url: '/api/entry',
// data: item,
data: {date: item.date},
headers: {'Content-Type': 'application/json;charset=utf8'}

}).then(function() {
loadEntries()
});

关于javascript - $http.delete 回调在基本 CRUD 应用程序中未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37124559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com