Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 将数组从React发送到Express/Node到query Mongo_Reactjs_Mongodb_Express - Fatal编程技术网

Reactjs 将数组从React发送到Express/Node到query Mongo

Reactjs 将数组从React发送到Express/Node到query Mongo,reactjs,mongodb,express,Reactjs,Mongodb,Express,我很难从React state通过Node/Express发送一组Id号,然后最终发送到MongoDB 主要的困难是如何将数组从React发送到服务器。一旦以可用数组的形式存在,我相信我知道如何使用数组查询MongoDB 我一直在尝试使用GET方法来实现这一点,但使用req.params或req.query失败。我已经尝试了几个版本的字符串模板,并且使用Axios文档所说的以及许多其他关于堆栈溢出的答案,没有一个是成功的 我还尝试了几个版本的PUT请求,但也没有成功 props.complete

我很难从React state通过Node/Express发送一组Id号,然后最终发送到MongoDB

主要的困难是如何将数组从React发送到服务器。一旦以可用数组的形式存在,我相信我知道如何使用数组查询MongoDB

我一直在尝试使用GET方法来实现这一点,但使用req.params或req.query失败。我已经尝试了几个版本的字符串模板,并且使用Axios文档所说的以及许多其他关于堆栈溢出的答案,没有一个是成功的

我还尝试了几个版本的PUT请求,但也没有成功

props.completedJobs中已存在ID数组:

在反应中:

  useEffect(() => {
    const fetchData = async () => {
      let completedJobsArray =  props.completedJobs;
      let json = JSON.stringify(data);
      let getData = {jsonData: json};
      const result = await axios('/api/brief/brief-array/' + getData);
      setData(result.data);
    };
    fetchData();

  }, []);
在Express应用程序中:


app.use("/brief", briefRouter);
然后在路由器中:

router.get("/brief-array/:briefArray", briefController.brief_findArrayById);  
然后函数:

exports.brief_findArrayById = async (req, res) => {
  try {
    // console.log("req.body: ", req.body);
    // console.log("req: ", req);
    // console.log("req.query: ", req.query);
    // console.log("req.params: ", JSON.stringify(req.params.briefArray));

    const briefs = await GWJob.find({"_id": {$in: ["5d1297512c68bc49060bce7b", "5d1297092c68bc49060bce7a"] } }); 
    res.json(briefs);
  } catch (err) {
    res.json({ message: err });
  }
}
MongoDB查询使用硬编码的ID,但无法使上述任何版本的console.logs显示除未定义或“object”之外的任何值

我也无法通过Postman使用数组查询数据库


我希望在一个数组中向MongoDB发送1个或多个id号,然后接收这些文档,以便在前端做出反应。非常感谢您通过Node/Express从React中的状态发送数组的任何帮助!谢谢。

您正在通过URL发送长度有限的长字符串(~2047个字符), 使用post或put方法并在
正文
中发送列表,可以安全地完成您要做的事情

例如:

useffect(()=>{
const fetchData=async()=>{
让completedJobsArray=props.completedJobs;
常量结果=等待axios({
方法:“post”,
url:“/简短数组”,
数据:completedJobsArray
});
setData(result.data);
};
fetchData();
}, []);

另一次尝试,仍然返回未定义。如果任何人有发送/接收数据的完整资源链接,我将不胜感激。在我开始使用Axios之前,我一直花了好几天的时间试图让其中一个正常工作,但如果我需要超越Axios的能力,我会回到原点。非常感谢

useEffect(() => {
    const fetchData = async () => {    
    let completedJobsArray = props.completedJobs;
    let queryData = {completedJobsArray};

    const settings = {
      method: 'POST',
      headers: { 'Content-Type': 'application/json; charset=utf-8'},
      body: JSON.stringify(queryData)
    };

    try {
      const fetchResponse = await fetch(`/api/brief/brief-array`, settings);
    const returnedData = await fetchResponse.json();
    setData(returnedData);
    } catch (error) {
      console.error("error: ", error);
    }
  }
  fetchData();
}, []);

您使用的是bodyparser还是cookieparser?当前使用extended:truen编码的bodyparser.url我确信这都是您的请求,对axios不太熟悉,但我认为您需要对json进行字符串化或将其作为对象发送,但我不确定您是如何处理api路由的,您是否尝试过:``axios('/api/brief/brief array',getData);?谢谢,是的,我相信我已经像上面那样尝试过stringify和axios('/api/brief/brief-array',getData)。axios文档在这方面似乎不完整。如果您知道如何发送数组,我很乐意使用另一种方法。我只是想提供帮助,但不幸的是,我总是这样使用“fetch”:
fetch(url,{headers:{'Content Type':'application/json;charset=utf-8'},method:'POST',body:json.stringify({data,})
我认为这是一种快速的测试方法!谢谢,如果我这样做的话,控制台日志显示req.data是未定义的,req.body是空的{}。如果我将数据更改为body,则相同:这是代码:``useffect(()=>{const fetchData=async()=>{let completedJobsArray=props.completedJobs;const result=wait axios({method:'POST',url:'/api/brief/brief array',data:completedJobsArray});setData(result.data);};fetchData();},[])```