【问题标题】:get record by ueser id from mongo db Node, Express, TypeScript API从 mongodb Node、Express、TypeScript API 按用户 ID 获取记录
【发布时间】:2021-03-11 19:31:54
【问题描述】:

我正在使用 TypeScript api 构建 Node JS,Express,我想在其中获取特定用户存储的数据。我想根据用户ID从mongodb获取reocrd。

我的 DataRouter.ts

router.get('/:userId', Data.findByUserId);

我的服务.ts

async findByUserId(id: string): Promise<IRecord[]> {
        try {
            return await DataModel.find({userId: id});
        } catch (error) {
            throw new Error(error.message);
        }
    },

我的数据组件

export async function findByUserId(req: Request, res: Response, next: NextFunction): Promise<void> {
    try {
        const record: IData[] = await DataService.findByUserId(req.params.id);

        res.status(200).json(record);
    } catch (error) {
        next(new HttpError(error.message.status, error.message));
    }
}

还有我的 IRepository.ts

findByUserId(id: string): Promise<T[]>;

我收到了错误

HttpError:转换为 ObjectId 的值失败 模型“DataModel”的路径“_id”处的“auth0|5fa05bf7657a9f006f9be77d”

如果有人有经验,我将非常感激,并分享您的知识。

【问题讨论】:

    标签: node.js mongodb typescript express oauth


    【解决方案1】:

    问题似乎是您传递给DataModel.find 方法的userId 不是有效的ObjectId。

    由于某种原因,objectId 包含前缀auth0|。也许你用这个参数调用路由?

    【讨论】:

    • 是的,这是我的用户 ID:userId : "auth0|5fa05bf7657a9f006f9be77d"
    • auth0| 不是猫鼬用户 ID 的一部分,这就是您收到错误的原因。在没有auth0 的情况下尝试一下,并使用 5fa05bf7657a9f006f9be77d 作为 userId 调用路由。
    • 状态:500 名称:错误 错误:模型“DataModel”的路径“_id”处的值“109024426039600041924”转换为 ObjectId 失败
    • 这个还在想_id,没有考虑我的userId
    • 这很奇怪。如果您传入5fa05bf7657a9f006f9be77d 并且在模型调用中,userId 似乎是109024426039600041924,那么它们之间会发生更多的事情。您可以尝试调试并找到 userId 更改的位置,或者只是在应用程序的不同级别打印出 userId。
    【解决方案2】:

    如您在错误消息auth0|5fa05bf7657a9f006f9be77d 中看到的那样,您得到了一个无效的对象 ID

    auth0| 来自哪里?

    您也可以将您的方法缩短为:

    findByUserId(id: string): Promise<IRecord[]> {
       return DataModel.find({userId: id});
    },
    

    【讨论】:

    • 现在我的结果是 Null。
    • userId : "auth0|5fa05bf7657a9f006f9be77d" 是来自 0Auth
    • @ZiaUllahZia 是的,这是一个无效的 mongodb ID
    猜你喜欢
    • 1970-01-01
    • 2021-02-06
    • 2016-01-03
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多