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

毕业设计遇到的问题

当我进行删除操作时

![D@I)7$2{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 哈哈。记住了

回到顶部