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

如何在React列表中使用MongoDB默认生成的ID

MongoDB返回ID无法使用的解决方案
  • 问题原因:MongoDB默认生成的_id是ObjectId类型(包含时间戳、机器标识等信息的特殊对象),而非普通字符串,直接调用会出现异常或无法正常取值,而name是字符串类型所以可直接使用。
  • 解决方法:
    1. 后端转换为字符串返回:以Node.js/Mongoose为例,可在查询时处理:
      // 查询后转换_id为字符串
      Model.find().lean().exec((err, docs) => {
        docs.forEach(doc => {
          doc.id = doc._id.toString();
          delete doc._id;
        });
        // 返回处理后的文档数据
      });
      
      也可通过Mongoose虚拟属性自动转换:
      const schema = new mongoose.Schema({ name: String });
      // 添加虚拟属性id,返回_id的字符串形式
      schema.virtual('id').get(function() {
        return this._id.toString();
      });
      // 确保转换为JSON时包含虚拟属性
      schema.set('toJSON', { virtuals: true });
      
    2. 前端手动处理:若后端未做转换,前端获取数据后直接转换:
      // 处理返回的数组数据
      const processedData = res.data.map(item => ({
        ...item,
        id: item._id.toString()
      }));
      
    3. 直接调用ObjectId方法:如果需要保留ObjectId类型,可直接调用其toString()或toHexString()方法获取字符串格式的ID。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 14:40:44