Arrays API在检索所有记录时返回对象数组,但在筛选时仅返回单个对象

Arrays API在检索所有记录时返回对象数组,但在筛选时仅返回单个对象,arrays,reactjs,api,mern,Arrays,Reactjs,Api,Mern,首先,我对这一切都很陌生。我有一个简单的CRUD MERN堆栈应用程序,它使用.map从数据库输出无序的条目列表。我正在尝试实现一个输入框,可以用于根据参数筛选列表。当检索到所有结果时,一切正常,但是当只检索到一个结果时,我得到一个错误。map不是函数 TypeError: missions.map is not a function MissionsList.render src/Components/missionList.js:121 118 | <p>All data i

首先,我对这一切都很陌生。我有一个简单的CRUD MERN堆栈应用程序,它使用.map从数据库输出无序的条目列表。我正在尝试实现一个输入框,可以用于根据参数筛选列表。当检索到所有结果时,一切正常,但是当只检索到一个结果时,我得到一个错误。map不是函数

TypeError: missions.map is not a function
MissionsList.render
src/Components/missionList.js:121
  118 | <p>All data is test data only</p>
  119 | 
  120 | 
> 121 | <ul className="list-group">
      | ^  122 |   {missions.map((mission, index) => (
  123 |       <li
  124 |         className={
View compiled
▶ 18 stack frames were collapsed.
(anonymous function)
src/Components/missionList.js:77
  74 | searchMsn() {
  75 |   MissionDataService.get(this.state.searchMsn)
  76 |     .then(response => {
> 77 |       this.setState({ missions: response.data });
     | ^  78 |       console.log(response.data);
  79 |     })
  80 |     .catch(e => {
下面是代码的API部分

router.get('/:msnNumber', function(req, res, next) {
  Mission.findOne({msnNumber: req.params.msnNumber}, function(err, foundMission){
    if (foundMission) {
      res.send(foundMission);
    } else {
      res.send("No missions matching that mission number were found");
    }
  });
});

任何帮助都将不胜感激。

我可以通过使用Mission.find而不是findOne来修复此问题。find似乎返回一个对象数组,即使只有一个结果,而findOne总是只返回一个对象。

我可以通过使用Mission.find而不是findOne来解决这个问题。find似乎返回一个对象数组,即使只有一个结果,而findOne总是只返回一个对象

   get(msnNumber) {
      return http.get(`/missions/${msnNumber}`);
    }
router.get('/:msnNumber', function(req, res, next) {
  Mission.findOne({msnNumber: req.params.msnNumber}, function(err, foundMission){
    if (foundMission) {
      res.send(foundMission);
    } else {
      res.send("No missions matching that mission number were found");
    }
  });
});