Mongoose错误 - 第二次没有更新数据库

时间:2017-02-22 04:11:05

标签: mongodb mongoose

我想更新我的数据库。我有两个单独的文件,我想更新它们。现在,它工作一次,第二次不起作用。

delsrequest: function(obj, callback) {
    console.log("object in deslrequest",obj)
    var rusername=obj.rusername;
    var susername=obj.susername;
    console.log("rusername",rusername,"susername",susername)
    var ty = {"username.requestssent":rusername}
    var isbn = obj.isbn;

    Books.find({"username":rusername},function(err,resp){

        if(err){
            console.log("there is err",err)
        }
        else{
            console.log("resp is ",resp)
            console.log("resp[0].requestssent is",resp[0].requestssent.length);
            var newrrs =[];
            console.log("start")
            for(var i =0;i<resp[0].requestssent.length;i++){
                console.log("inside for loop",i)
                console.log("resp[0].requestssent[i]",resp[0].requestssent[i])
                console.log(resp[0].requestssent[i].isbn,isbn)
                if(resp[0].requestssent[i].isbn==isbn){
                    newrrs = resp[0].requestssent.splice(i,1)
                    console.log("resp",resp)
                }

            }
            console.log("?end")
            console.log("resp before",resp)


            console.log("newrrs",newrrs)
            Books.findOneAndUpdate({"username":rusername},{"requestssent":resp[0].requestssent},function(err,resp){
                if(err){
                    console.log("x",err)
                }
                else{
                    console.log("y")

                    //callback(null,resp)
                }
            })

        }

    }).then(Books.find({"username":susername},function(err,res){

        if(err){
            console.log("there is err",err)
        }
        else{
            //requestsrecieved
            console.log("res is ",res)
            console.log("res[0].requestsrecieved is",res[0].requestsrecieved.length);
            var newrrs =[];
            var gtarr;
            console.log("start")
            for(var i =0;i<res[0].requestsrecieved.length;i++){
                console.log("inside for loop",i)
                console.log("resp[0].requestsrecieved[i]",res[0].requestsrecieved[i])
                console.log(res[0].requestsrecieved[i].isbn,isbn)
                if(res[0].requestsrecieved[i].isbn==isbn){
                    newrrs = res[0].requestsrecieved.splice(i,1)
                    console.log("res",res)
                    console.log("res[0].requestsrecieved",res[0].requestsrecieved)
                    gtarr=res[0].requestsrecieved;
                }

            }
          console.log("susername",susername)
          console.log("gtarr",gtarr)
            Books.findOneAndUpdate({"username":susername},{"requestssent":gtarr},function(err,response){
                if(err){
                    console.log("x",err)
                }
                else{
                    console.log("y")
                    console.log("resp[0].requestsrecieved",response)
                    callback(null,response)
                }
            })

        }

    })
    )


},

第一个Books.find和findOneandUpdate完美运行。第二个没有更新。当它到达这里时,它显示正确的gtarr值。删除了一个我要删除的值。我也更新它。但是,它只是没有更新它。

   console.log("susername",susername)
          console.log("gtarr",gtarr)
            Books.findOneAndUpdate({"username":susername},   {"requestssent":gtarr},function(err,response){ if(err){

我看不到从mongodb数据库中删除任何内容。我试过看一切,我无法理解它的相同代码。有一次它有效,第二次没有。我也想过,因为Async可能是迭代,这就是为什么它会在之后.then。有人可以请帮帮我。

0 个答案:

没有答案