mongodb 由于客户端和服务器端集成导致值错误

envsm3lx  于 2023-01-16  发布在  Go
关注(0)|答案(1)|浏览(101)

我有一个id为"text"的文本区域,我用一个div的click事件切换文本区域显示在屏幕上,我有30个这样的div,最初,我用ajax调用的结果将textarea.value赋给我的fetch api,它基于一个唯一的id从服务器端的mongo获取数据。
有时候,当我在后台对我的update api进行ajax调用时,我作为数据发送给这个ajax调用的textarea.value与文本区域的更新文本不一样。

//client side 
// called when any of the divs is clicked
$(".radius").on("click", function(event) {
//extracting the id from the class and using this id as the id of my data for my mongo
var st=event.target.classList[1].substring(0,7);
var num=parseInt(event.target.classList[1].substring(7));
var toadd="close-button"+num;
//console.log(num+"modal")
closeButton.classList.add(toadd);
$.ajax({type: "POST",
        url: "/fetch",
        async: true,
        data:  JSON.stringify({
            id: num,
        }),
        dataType: 'json',
        contentType: 'application/json; charset=utf-8',
        success:function(result) {
          input.value=result.text;
        },
        error:function(result) {
           console.log("error")
        }
});
modal.classList.toggle("show-modal");
});
// called when textarea is closed
function toggleModal1(event) {
    var s1=closeButton.classList[closeButton.classList.length-1];
    var st=s1.substring(12);
    closeButton.classList.remove(s1);
    var num=parseInt(st);
   // event.preventDefault();
   console.log(input.value)
    $.ajax({type: "POST",
        url: "/update",
        
        data:  JSON.stringify({
            id:num,
            text:input.value,
  //input is my textarea
        }),
        dataType: 'json',
        contentType: 'application/json; charset=utf-8',
        success:function(result) {
           
        },
        error:function(result) {
           console.log("error")
        }
    });
    modal.classList.toggle("show-modal");
}
//server side
app.post("/fetch",function(req,res)
{
      //console.log(req.body);
      // var id1=req.body.id;
      const findInDB= Fruit.findOne({id:req.body.id},function (err, docs) {
        console.log(docs);
             res.send({text:docs.text});
       });  
       
});
app.post("/update",function(req,res)
{
  Fruit.updateOne({id:req.body.id}, 
    {text:req.body.text}, function (err, docs) {
    if (err){
        console.log(err)
    }
    else{
       console.log("Updated Docs : ", docs);
    }
});

我试着调试我的代码,但无法推理出控制台的内容。

cbeh67ev

cbeh67ev1#

您在客户端代码中引用了input,但我在代码中的任何地方都没有看到它。您能检查一下吗?
更新:
我作为数据发送到这个ajax调用的textarea.value与文本区域更新后的文本不一样。
我假设你在与input相关的代码中有一个错误,如果你能把它添加到你的答案中,会更容易帮助你。

相关问题