mongoose删除文档时遇到的问题,
发布于 10 年前 作者 harwinvoid 5418 次浏览 最后一次编辑是 9 年前 来自 问答

毕业设计遇到的问题

当我进行删除操作时

![D@I)72ドル{7@P{_PZ[SC[5QC.png

打开F12查看网络请求时发现上面操作的ajax事件处于挂起状态,挂着挂着请求就失败了

![WUDCMI1O492IN@SSNN%Y{R.png

页面JS

 //删除选中的老师
 jqueryMap.$delTeacher.on('click',function(){
 var ids = getSelectedIds(),params;
 params = {
 ids: ids
 };
 $.post('/delTeacher.json',params,function(data){
 });
 });

routes

 app.route('/delTeacher.json')
 .post(users.delTeacher);

controllers

 exports.delTeacher = function (req,res,next){
 var delIds = req.body.ids;
 User.delTeacherById(delIds,function(data){
 });
 }

models

UserSchema.statics.delTeacherById = function (ids) {
 var ObjectId = mongoose.Types.ObjectId;
 for (var i = 0,len=ids.length; i < len; i++) {
 this.remove({role: 2, _id:new ObjectId(ids[i])});
 }
 return null;
}

真不知道问题出在哪,忘大家指出错误出在哪?

7 回复

路由进来了么? 错误是啥?

删除的话, 我一般是这样做的。 var user = yield User.findOne({_id:id});

user.remove();

@21614306 没有报错,都已经执行到了我model中定义的方法,如第二张图片显示的那样,请求处于pending状态

刚刚查了mongoose的API,删除操作需要传入一个callback,删除操作才会执行。我传入个cb后,确实是删除了那条记录,但页面上的Ajax请求还是处于Pending状态

已经解决了。 只要在controller中的函数中加一句话

exports.delTeacher = function (req,res,next){
 var delIds = req.body.ids;
 User.delTeacherById(delIds,function(data){
	 res.json(data); //加上这一句话,就不会出现pending状态了
 });
 }
models

@harwinvoid 哈哈...这玩意都没撸,怎么响应啊

@fangker 哈哈。记住了

回到顶部

AltStyle によって変換されたページ (->オリジナル) /