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

Mongoose中user.save()未返回生成的_id,数据库已正常存储数据

问题分析与解决方案

你的问题核心是调用save()后返回的文档缺失_id,但数据库已成功生成并存储ID,主要原因集中在模型定义不完整和导入错误这两点,以下是具体修复方案:

1. 修正Mongoose导入方式

你当前的导入语句是错误的,Mongoose采用默认导出,而非命名导出:

// 错误写法
import { mongoose } from "mongoose";

// 正确写法
import mongoose from "mongoose";

错误的导入会导致Mongoose对象未正确初始化,引发异常行为。

2. 补充User模型定义

你仅定义了userSchema,但没有通过Mongoose生成对应的User模型,这是导致实例化后文档异常的关键。需添加模型创建代码:

const User = mongoose.model('User', userSchema);

完整的模型定义+导出代码如下:

import mongoose from "mongoose";

const Schema = mongoose.Schema;

const userSchema = new Schema({
    name: {
        type: String,
        required: true,
    },
    age: {
        type: Number,
        required: true,
    },
    email: {
        type: String,
        required: true,
    },
});

// 生成User模型并关联Schema
const User = mongoose.model('User', userSchema);

export const addUser = async (_user) => {
    let user = new User({ ..._user });
    let result;
    try {
        result = await user.save();
        console.log(result._id); // 现在会输出正确的ID
    } catch (err) {
        console.log(err);
    }
    return result;
};

3. 替代方案:使用create()方法

如果上述修复后仍有问题,可以直接使用Mongoose的create()方法,它会自动处理实例化与保存,并返回包含完整_id的文档:

export const addUser = async (_user) => {
    let result;
    try {
        result = await User.create(_user);
        console.log(result._id);
    } catch (err) {
        console.log(err);
    }
    return result;
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:55:13