【问题标题】:Express API returning an unwanted "data" section in my GET all requestsExpress API 在我的 GET all 请求中返回不需要的“数据”部分
【发布时间】:2018-11-12 05:03:31
【问题描述】:

我目前正在构建一个 rest API,当我发出 /GET 请求时,我得到了一个意外的输出。

当我向 API 发出 get 请求时,它会返回

{ 
  data: {
    [{myExpectedObjects},{myExpectedObjects}]
  }
}

但是,我希望我的 get 请求只返回对象数组。下面是我用来完成其余调用的代码

创建控制器

const create = (req, res) => {
    let dataModel = generateModel(genericDataFromReq);

    dataModel = new dataModel({
      genericData,
      specificData,
    });

    dataModel.save().then((data) => {
      res.status(201).send(data);
    }, (e) => {
      res.status(500).send(e);
    });
  }
};

获取所有控制器

const list = (req, res) => {
  const dataModel = generateModel(dataToGet);

  dataModel.find().then((data) => {
    if (data.length === 0) {
      res.status(404).send('failed');
    } else {
      res.status(200).send({ data });
    }
  }, (e) => {
    res.status(500).send(e);
  });
};

生成数据模型

function generateModel(dbCollectionName) {
  try {
    return generateDataModel(dbCollectionName);
  } catch (e) {
    return mongoosee.model(`${dbCollectionName}`);
  }
}

我知道代码有点不合常规,但我设置了一个通用的 rest API 来接收不同类型的请求,我发现这个解决方案是最好的方法。

关于为什么我的获取所有请求在我的对象数组之前添加“数据”部分的任何想法(这是我真正感兴趣的)?

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    我认为问题出在这一行:

    else {
      res.status(200).send({ data });
    }
    

    当您在变量周围加上花括号时,它会创建一个键值对,其中键是变量的名称,值是变量的值。所以摆脱花括号,它应该可以按您的预期工作。请参阅此处提及此 ES2015 符号的部分:

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-02
      • 1970-01-01
      • 1970-01-01
      • 2020-10-28
      • 1970-01-01
      • 1970-01-01
      • 2021-10-18
      • 2021-06-02
      相关资源
      最近更新 更多