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

TypeORM配合MongoDB执行save/insert后数据未入库且find报错

修复方案

核心错误原因

你遇到的Cannot read property 'prototype' of undefined错误,以及集合不生成但统计数递增的问题,基本都是TypeORM MongoDB场景下的实体元数据解析错误、异步时序问题两类原因导致,按以下步骤修复即可:


1. 修正实体的导入依赖

这是触发原型读取错误的最高发原因,请确保File实体的导入语句完全正确:

// 从typeorm导入装饰器
import { Entity, Column, ObjectIdColumn } from "typeorm";
// 从mongodb包导入ObjectID类型
import { ObjectID } from "mongodb";

如果错误导入了其他包下的ObjectIdColumn或ObjectID,会导致TypeORM解析实体结构时读取原型失败。

2. 调整异步代码写法

你当前的回调嵌套写法容易出现异步时序遗漏,统一使用async/await改写业务逻辑,避免异步操作未完成就执行后续查询:

import * as fs from "fs";

async function saveFileEntry(filePath: string) {
    const manager = (await mongoConnection).mongoManager;
    console.log((await manager.stats(File)).count);

    const file = new File();
    file.filePath = filePath;
    file.fileSize = fs.statSync(filePath).size;

    try {
        // 等待保存操作完成再执行查询
        const savedFile = await manager.save(file);
        console.log("Saved file:", savedFile);

        const files = await manager.find(File);
        files.forEach(item => console.log("Found file:", item));
    } catch (error) {
        console.log(`操作失败: ${error}`);
    }
}

3. 验证连接与集合生成逻辑

  • 确认MongoDB Compass中查看的是配置里指定的test数据库,避免切换错库看不到集合
  • synchronize: true配置在MongoDB下不会主动创建空集合,集合会在第一条数据成功写入后自动生成
  • 查看TypeORM控制台的操作日志,确认写入的集合名是否为你配置的files

4. 兼容性替代方案:使用MongoRepository

如果MongoManager的find方法持续报错,可以改用MongoRepository实现数据操作,对MongoDB的兼容性更好:

async function saveFileEntry(filePath: string) {
    const connection = await mongoConnection;
    const fileRepo = connection.getMongoRepository(File);
    console.log((await fileRepo.stats()).count);

    const file = new File();
    file.filePath = filePath;
    file.fileSize = fs.statSync(filePath).size;

    try {
        const savedFile = await fileRepo.save(file);
        console.log("Saved file:", savedFile);

        const files = await fileRepo.find();
        files.forEach(item => console.log("Found file:", item));
    } catch (error) {
        console.log(`操作失败: ${error}`);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:51:02