将数据从node.js发送回客户端javascript

将数据从node.js发送回客户端javascript,javascript,node.js,express,Javascript,Node.js,Express,我想做的是,我已经设置了一个从客户端JS到server Node.JS的fetch连接,当一个人点击HTML中的一个按钮时,该按钮会触发服务器端在其find's it中查找MongoDB数据库中的元素,但我的问题是如何将找到的元素发送回客户端JS Javascript Code: var button = document.getElementById("1"); button.addEventListener("click", idss); function idss() {

我想做的是,我已经设置了一个从客户端JS到server Node.JS的fetch连接,当一个人点击HTML中的一个按钮时,该按钮会触发服务器端在其find's it中查找MongoDB数据库中的元素,但我的问题是如何将找到的元素发送回客户端JS

Javascript Code:

var button = document.getElementById("1");

button.addEventListener("click", idss);


function idss() {
      var id = this.id;

    var data = {
    name : id 
}

fetch("/clicked", {
     method: 'POST',
     headers: {
     'Content-Type': 'application/json'
     }, 
     body: JSON.stringify(data)
})
   .then(function(response) {
      if(response.ok) {
        console.log('awesome');
        return;
      }
      throw new Error('Request failed.');
    })
    .catch(function(error) {
      console.log(error);
    }); 
}


NODE JS:

app.post("/clicked", (req, res) => {
    var pro = (req.body.name);
    Number(pro);
    Product.findOne({"id": pro}, function(err, foundLList) {
        if(err) {
            console.log(err);
        } else {
            console.log(foundLList); //THE ELEMENT IS FOUND
        }
    } 
  ); 
});

我试图做的是将找到的元素发送到Javascript,以便添加到另一个变量。

您必须使用res对象将数据发送回客户端。您的节点代码将是:

app.post("/clicked", (req, res) => {
    var pro = (req.body.name);
    Number(pro);
    Product.findOne({
        "id": pro
    }, function(err, foundLList) {
        if (err) {
            console.log(err);
            return res.status(500).json({
                ok: false,
                error: err
            });
        } else {
            console.log(foundLList); //THE ELEMENT IS FOUND
            return res.status(200).json({
                ok: true,
                data: foundLList
            });

        }
    });
});
在客户端,您可以像这样读取数据:

fetch("/clicked", {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(data)
    })
    .then(response => response.json())
    .then(function(response) {
        if (response.ok) {
            console.log('got data: ', response.data);
        }
        throw new Error('Request failed.');
    })
    .catch(function(error) {
        console.log(error);
    });
}

在Node.js中使用res.send(数据);实际归还某物。据我所知,大部分MongoDB函数都是异步的,所以最好使用async/Await。如果您使用的是Express.js,这将在文档开头的基本示例中介绍。我尝试将我得到的未定义放在undefined for response.data中。尝试将响应对象转换为JSON。添加
.then(response=>response.json())
在then we haveThaks Mohammed之前,我用这段代码解决它。然后(response=>response.json())。然后(res=>{if(res.ok){console.log(res);}很高兴能帮上忙:)