You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Mongoose返回的无名数组添加名为results的父对象?

解决Mongoose接口返回无名数组改为带results键的对象问题

你的EventModel定义本身没有问题,要实现返回带results名称的数组,需要修改接口的返回逻辑——也就是在查询事件列表的路由/控制器代码中,把Mongoose查询到的数组包装成一个包含results键的对象。

修改前的典型接口代码(返回无名数组)

// 示例:Express框架下的接口路由
const EventModel = require('./path/to/event.model');

app.get('/api/events', async (req, res) => {
  try {
    const events = await EventModel.find();
    res.status(200).json(events); // 直接返回数组,前端拿到的是无名数组
  } catch (err) {
    res.status(500).json({ error: err.message });
  }
});

修改后的接口代码(返回带results键的对象)

只需要把查询到的数组放入results字段中返回即可:

const EventModel = require('./path/to/event.model');

app.get('/api/events', async (req, res) => {
  try {
    const events = await EventModel.find();
    // 将数组包装在results字段里返回
    res.status(200).json({ results: events });
  } catch (err) {
    res.status(500).json({ error: err.message });
  }
});

扩展:带分页信息的返回格式(可选)

如果需要分页功能,可以同时返回分页相关参数,方便Flutter前端处理:

app.get('/api/events', async (req, res) => {
  try {
    const page = parseInt(req.query.page) || 1;
    const limit = parseInt(req.query.limit) || 10;
    const skip = (page - 1) * limit;

    const events = await EventModel.find().skip(skip).limit(limit);
    const totalEvents = await EventModel.countDocuments();

    res.status(200).json({
      results: events,
      pagination: {
        currentPage: page,
        pageSize: limit,
        totalCount: totalEvents,
        totalPages: Math.ceil(totalEvents / limit)
      }
    });
  } catch (err) {
    res.status(500).json({ error: err.message });
  }
});

修改完成后,Flutter前端就能通过response['results']直接获取到命名的事件数组,符合你的需求。

内容的提问来源于stack exchange,提问作者DBG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 01:25:11